A Minimal TanStack Start Starter That Doesn't Make You Choose
Starting a new project usually means making a dozen decisions before you write a single line of app code. Which router? Which ORM? How do you handle auth without bolting on something half-finished later? Cove Stack is a starter that's already made those calls for you, bundling TanStack Start with Drizzle, Better Auth, and Nitro into a minimal, opinionated base.
What It Does
Cove Stack is a minimal starter for TanStack Start. You can scaffold a project with pnpm create cove, or use it as a GitHub template. Out of the box, it wires together React with TanStack Start, Router, and Query on the frontend side, plus Tailwind CSS, shadcn/ui, and Base UI for styling and components.
On the backend and data side, it brings in Drizzle ORM with PostgreSQL for your database layer and Better Auth for authentication. The build and deployment story runs on Vite Plus and Nitro, with the Vite config set up to use Nitro by default. That means you get access to Nitro's deployment presets for Netlify, Vercel, Node.js, and others without reconfiguring anything. There's also a monorepo variant available at mugnavo/cove-monorepo if you prefer pnpm workspaces over a single package.
It's worth noting the project was formerly called TanStarter, so if you've seen that name around, it's the same thing.
Why It's Cool
-
It picks a stack and commits to it. The hardest part of a starter is often deciding what not to include. Cove keeps the surface area small: a router, a query layer, an ORM, an auth library, and a build tool. Nothing more. If you already like these choices, you skip the setup tax entirely.
-
Environment variables get real treatment. Instead of scattering
process.envreads across your codebase, Cove uses Varlock to keep the env contract in a.env.schemafile and generate types from it. You validate withvpr env:loadand importENVfromvarlock/envin your app code. It's a small thing, but it's the kind of small thing that saves you from a production bug at 2am. -
Logging is wired in, not bolted on. evlog runs through Nitro and emits one structured event per request. You add a drain when you need logs shipped to a provider in production. For local development, you get structured logs without extra setup.
-
The README is honest about what's still in flux. There's an "Issue watchlist" section calling out that TanStack Start is in RC, TanStack Devtools is in alpha, Nitro v3 is in beta, Drizzle ORM v1 is in RC, and Vite+ is in RC. That's a lot of pre-1.0 software in one stack, and the project doesn't pretend otherwise. If you're the kind of developer who wants to know exactly what you're signing up for, this transparency is genuinely useful.
-
Dependency versions are pinned. Your packages might be slightly stale when you scaffold, but the project gives you a clear path to upgrade selectively with
vpr depsorvpx taze@latest -Ilw --maturity-period 3. The maturity period flag is a nice touch for avoiding freshly-broken releases.
How to Try It
You'll need Node.js 24 or higher, pnpm 12 or higher, and Vite Plus installed (vp).
The fastest path is the CLI:
pnpm create cove
Or you can use it as a template directly on GitHub.
Once you've got the project, the setup is four steps:
-
Create a
.env.localfile based on.env.schema, then validate it:vpr env:load -
Generate and apply your initial database migration:
vpr db generate vpr db migrate -
Start the dev server:
vpr dev -
Visit http://localhost:3000.
There's also an auth:generate script for regenerating the auth database schema when needed. Check the package.json for the full list of scripts.
You can find the repo and a live preview at github.com/mugnavo/cove.
Final Thoughts
Cove Stack isn't trying to be everything to everyone. It's a specific combination of tools for developers who've already decided they want the TanStack ecosystem, or who are curious enough to try it. The tradeoff is clear: you get a coherent, minimal starting point, but you're adopting a stack with several components still in RC or beta. If that doesn't bother you, the setup savings are real. If you need everything stable, you might want to wait for a few of those watchlist items to settle. Either way, it's a well-documented starting point that respects your time.
Follow @githubprojects for more developer tools and open source projects.