Templates / typescript

Hono + Cloudflare Workers + D1 + Drizzle Starter

TanStack Router, Hono, Cloudflare Workers, SQLite, Cloudflare D1, and Drizzle form a split app configuration where the frontend and backend are generated as separate primary parts. Better Fullstack can scaffold this exact compatibility-checked selection.

01 / selection

Stack at a glance

RoleTechnologyRepository descriptionScope
FrontendTanStack Router
Modern type-safe router for ReactPrimary frontend
BackendHono
Ultrafast web frameworkPrimary backend
RuntimeCloudflare Workers
Serverless runtime for the edgeScoped to Hono
DatabaseSQLite
File-based SQL databaseProject-wide
Database hostingCloudflare D1
Serverless SQLite-compatible database for Cloudflare WorkersScoped to the database
ORMDrizzle
TypeScript ORMScoped to Hono
APItRPC
End-to-end typesafe APIsScoped to Hono
AuthenticationBetter-Auth
The most comprehensive authentication framework for TypeScriptScoped to Hono
CSSTailwind CSS
Utility-first CSS frameworkScoped to TanStack Router
UI libraryshadcn/ui
Re-usable components built with Radix and TailwindScoped to TanStack Router

02 / architecture

How the pieces fit

  • The frontend and backend are separate primary stack parts.
  • Cloudflare Workers is scoped to Hono.
  • Cloudflare D1 is scoped to the database.
  • Drizzle is scoped to Hono.
  • tRPC is scoped to Hono.
  • Better-Auth is scoped to Hono.
  • Tailwind CSS is scoped to TanStack Router.
  • shadcn/ui is scoped to TanStack Router.
  • Tailwind CSS and shadcn/ui are selected together.

03 / output

What gets generated

The virtual generator produced 75 files across 23 directories. The output is a workspace.

Top-level entries

  • ./.gitignore
  • ./AGENTS.md
  • ./CLAUDE.md
  • ./README.md
  • ./apps
  • ./bunfig.toml
  • ./package.json
  • ./packages
  • ./tsconfig.json
  • ./turbo.json

Representative files

  • README.md
  • apps/server/package.json
  • apps/web/package.json
  • package.json
  • packages/api/package.json
  • packages/auth/package.json
  • packages/config/package.json
  • packages/db/package.json

04 / create

Create command

This is the canonical Bun command generated for the selection.

bun create better-fullstack@latest my-app --ecosystem typescript --frontend tanstack-router --css-framework tailwind --ui-library shadcn-ui --shadcn-base radix --shadcn-style nova --shadcn-icon-library lucide --shadcn-color-theme neutral --shadcn-base-color neutral --shadcn-font inter --shadcn-radius default --backend hono --runtime workers --api trpc --auth better-auth --payments none --email none --file-upload none --logging none --observability none --feature-flags none --integrations none --ecommerce none --realtime none --job-queue none --caching none --rate-limit none --bot-protection none --i18n none --search none --vector-db none --file-storage none --cms none --effect none --ai none --state-management none --forms react-hook-form --validation zod --testing vitest --animation none --web-mcp none --database sqlite --orm drizzle --db-setup d1 --package-manager bun --git --web-deploy none --server-deploy cloudflare --install --part workspaceRunner:universal:turborepo --examples none --ai-docs claude-md agents-md

05 / builder

Open in the builder

Open this exact selection →
rt
workers
dbs
d1
sd
cloudflare

06 / checks

Compatibility notes

Compatibility checked against Better Fullstack types version 2.8.0.

The generated record has 0 graph issues and 0 disabled selected options. This is a compatibility check, not a claim that this exact scaffold received a runtime smoke verification.

  • The selected shadcn/ui setup is paired with Tailwind CSS.

07 / fit

When to choose this shape

Choose this shape when the browser frontend and API server should remain separate generated parts.

08 / next

Related stacks and guide

09 / faq

Questions

Is this combination supported?

It passes the repository's compatibility analysis, selected-option checks, stack graph validation, project schema parsing, and virtual generation. That result is described here as compatibility checked.

Does it generate one app or separate parts?

The frontend and backend are generated as separate primary parts. The actual generated output uses a workspace layout.

How can I customize the selection?

Open the generated builder link above. Its query parameters reproduce this selection, and the builder can change compatible options before generating a new command.

GitHub Sponsors