Stack template / typescript

TanStack Start + Drizzle + Better Auth Starter

Tanstack Start, Fullstack TanStack Start, SQLite, Drizzle, tRPC, and Better-Auth form a single app configuration where one frontend framework owns the UI and server boundary. Better Fullstack can scaffold this exact compatibility-checked selection.

01 / selection

Stack at a glance

RoleTechnologyRepository descriptionScope
FrontendTanstack StartFull-stack React and Solid framework powered by TanStack RouterPrimary frontend
BackendFullstack TanStack StartUse TanStack Start's built-in API routesProject-wide
RuntimeNoneNo specific runtimeProject-wide
DatabaseSQLiteFile-based SQL databaseProject-wide
ORMDrizzleTypeScript ORMScoped to the backend
APItRPCEnd-to-end typesafe APIsScoped to the backend
AuthenticationBetter-AuthThe most comprehensive authentication framework for TypeScriptScoped to the backend
CSSTailwind CSSUtility-first CSS frameworkScoped to Tanstack Start
UI libraryshadcn/uiRe-usable components built with Radix and TailwindScoped to Tanstack Start

02 / architecture

How the pieces fit

  • The frontend and backend are separate primary stack parts.
  • The selected frontend framework owns the server boundary through its self backend.
  • Drizzle is scoped to the backend.
  • tRPC is scoped to the backend.
  • Better-Auth is scoped to the backend.
  • Tailwind CSS is scoped to Tanstack Start.
  • shadcn/ui is scoped to Tanstack Start.
  • Tailwind CSS and shadcn/ui are selected together.

03 / output

What gets generated

The virtual generator produced 65 files across 26 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/web/package.json
  • package.json
  • packages/api/package.json
  • packages/auth/package.json
  • packages/config/package.json
  • packages/db/package.json
  • packages/env/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-start --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 self --runtime none --api trpc --auth better-auth --payments none --email none --file-upload none --logging none --observability none --feature-flags none --realtime none --job-queue none --caching none --rate-limit 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 --database sqlite --orm drizzle --db-setup none --package-manager bun --git --web-deploy none --server-deploy none --install --addons turborepo --examples none --ai-docs claude-md agents-md

05 / builder

Open in the builder

Open this exact selection →
fe-w
tanstack-start
rt
none
be
self-tanstack-start

06 / checks

Compatibility notes

Compatibility checked against Better Fullstack types version 2.3.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.

  • Runtime is intentionally set to none.
  • The selected shadcn/ui setup is paired with Tailwind CSS.

07 / fit

When to choose this shape

Choose this shape when one framework should own the UI, server routes, and application boundary.

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?

One frontend framework owns the UI and server boundary. 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.

Patreon