The Cove Stack: 🏝️ minimal TanStack Start template with Vite+, Better Auth, Drizzle ORM, shadcn/ui
See the codeA minimal starter stack for 🏝️ TanStack Start. → Preview here
[!NOTE] TanStarter is now Cove Stack.
pnpm create cove
--preset b1au68YWO)[!TIP] This template is also available as a monorepo, powered by Vite+ and pnpm workspaces. See mugnavo/cove-monorepo.
Use this template or create a project using our CLI:
pnpm create cove
Create a .env.local file with your values, based on .env.schema, then validate them:
vpr env:load
Generate the initial migration with drizzle-kit, then apply to your database:
vpr db generate
vpr db migrate
Run the development server:
vpr dev
The development server should now be running at http://localhost:3000.
Varlock keeps the environment-variable contract in .env.schema and generates types from it. Put local values, including secrets, in the uncommitted .env.local, then run vpr env:load to validate them.
In application code, import { ENV } from "varlock/env" instead of reading process.env directly.
evlog is wired into the app through Nitro and emits one structured event per request. Add a drain when production needs logs sent to your chosen provider.
The vite config is configured to use Nitro by default, which supports many deployment presets like Netlify, Vercel, Node.js, and more.
Refer to the TanStack Start hosting docs for more information.
Dependency versions are pinned, so they may be slightly outdated when you create your project. To selectively upgrade packages, run vpr deps or vpx taze@latest -Ilw --maturity-period 3.
Check package.json for the full list of available scripts.
auth:generate - Regenerate the auth db schema if you've made changes to your Better Auth config.db - Run drizzle-kit commands. (e.g. vpr db generate, vpr db studio)ui - The shadcn/ui CLI. (e.g. vpr ui add button)format, lint - Run Oxfmt and Oxlint, or both via vpr check.deps - Selectively upgrade dependencies via taze.auth/middleware.ts - Sample middleware for enforcing authentication on server functions & API routes.theme-toggle.tsx, theme-provider.tsx - A theme toggle and provider for toggling between light and dark mode.The testing foundation uses Vitest and Playwright and is intentionally lightweight. For short-lived prototypes, it can be safely ignored or removed.
vpr test (or Vite+'s built-in vp test) runs the Vitest unit and local integration tests once.vpr test watch runs Vitest in watch mode.vpr test:e2e builds the app and runs the Playwright end-to-end tests.Code in this template is public domain via Unlicense. Feel free to remove or replace for your own project.
1,989 followers · starred Oct 2025
151 followers · starred Mar 2026
21 followers · starred May 2025
72 followers · starred Jun 2025
The Cove Stack: 🏝️ minimal TanStack Start template with Vite+, Better Auth, Drizzle ORM, shadcn/ui
See the codeA minimal starter stack for 🏝️ TanStack Start. → Preview here
[!NOTE] TanStarter is now Cove Stack.
pnpm create cove
--preset b1au68YWO)[!TIP] This template is also available as a monorepo, powered by Vite+ and pnpm workspaces. See mugnavo/cove-monorepo.
Use this template or create a project using our CLI:
pnpm create cove
Create a .env.local file with your values, based on .env.schema, then validate them:
vpr env:load
Generate the initial migration with drizzle-kit, then apply to your database:
vpr db generate
vpr db migrate
Run the development server:
vpr dev
The development server should now be running at http://localhost:3000.
Varlock keeps the environment-variable contract in .env.schema and generates types from it. Put local values, including secrets, in the uncommitted .env.local, then run vpr env:load to validate them.
In application code, import { ENV } from "varlock/env" instead of reading process.env directly.
evlog is wired into the app through Nitro and emits one structured event per request. Add a drain when production needs logs sent to your chosen provider.
The vite config is configured to use Nitro by default, which supports many deployment presets like Netlify, Vercel, Node.js, and more.
Refer to the TanStack Start hosting docs for more information.
Dependency versions are pinned, so they may be slightly outdated when you create your project. To selectively upgrade packages, run vpr deps or vpx taze@latest -Ilw --maturity-period 3.
Check package.json for the full list of available scripts.
auth:generate - Regenerate the auth db schema if you've made changes to your Better Auth config.db - Run drizzle-kit commands. (e.g. vpr db generate, vpr db studio)ui - The shadcn/ui CLI. (e.g. vpr ui add button)format, lint - Run Oxfmt and Oxlint, or both via vpr check.deps - Selectively upgrade dependencies via taze.auth/middleware.ts - Sample middleware for enforcing authentication on server functions & API routes.theme-toggle.tsx, theme-provider.tsx - A theme toggle and provider for toggling between light and dark mode.The testing foundation uses Vitest and Playwright and is intentionally lightweight. For short-lived prototypes, it can be safely ignored or removed.
vpr test (or Vite+'s built-in vp test) runs the Vitest unit and local integration tests once.vpr test watch runs Vitest in watch mode.vpr test:e2e builds the app and runs the Playwright end-to-end tests.Code in this template is public domain via Unlicense. Feel free to remove or replace for your own project.
1,989 followers · starred Oct 2025
151 followers · starred Mar 2026
21 followers · starred May 2025
72 followers · starred Jun 2025