ViteReactSaaSStarter

cove — Vite SaaS Template

By mugnavo

Cove is a minimal TanStack Start starter template that integrates React, Tailwind CSS, shadcn/ui, Drizzle ORM, and Better Auth, suitable for quickly building full-stack applications with authentication and a database.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Minimal full-stack starter template based on TanStack Start, integrating React, TanStack Router, and Query

02

Uses Tailwind CSS, shadcn/ui, and Base UI preset for building interfaces

03

Built-in Drizzle ORM and PostgreSQL database layer, with drizzle-kit for managing migrations

04

Integrates Better Auth authentication and provides an authentication middleware example

05

Supports multiple deployment presets via Vite Plus and Nitro, such as Netlify, Vercel, and Node.js

06

Code is licensed under the Unlicense public domain, allowing free modification or replacement

Template Details

Cove is a minimal TanStack Start starter template maintained by mugnavo, formerly known as TanStarter. It combines React, TanStack Start/Router/Query, Tailwind CSS, shadcn/ui (Base UI preset), Drizzle ORM + PostgreSQL, Better Auth, Vite Plus, and Nitro to quickly create full-stack projects with authentication and a database.

The template offers a CLI creation method (pnpm create cove) and also supports generating a project from a GitHub template repository. Environment variables are managed by Varlock, with a contract defined in .env.schema that generates types, and local values written to .env.local. Database migrations use drizzle-kit, performed via vpr db generate and vpr db migrate. The development server runs at localhost:3000 by default.

The template includes an authentication middleware example, light/dark theme toggle components, and a lightweight testing foundation based on Vitest and Playwright. Logging is integrated with Nitro via evlog, outputting one structured event per request; in production, you need to add a drain yourself. For deployment, vite.config.ts uses Nitro by default, supporting presets such as Netlify, Vercel, and Node.js.

Note: TanStack Start is in RC stage, TanStack Devtools is in alpha, Nitro v3 is beta, and Drizzle ORM v1 is RC. Dependency versions are pinned and may be slightly outdated when creating a project. The code is licensed under the Unlicense, which is public domain, and can be freely modified or replaced.

ViteReactSaaSStarter

Is it right for your project?

Use Cases

  • Quickly creating full-stack web application prototypes with user authentication and a PostgreSQL database
  • As a starting point for TanStack Start projects, adding or removing feature modules as needed
  • Learning how to integrate TanStack Start, Drizzle ORM, and Better Auth
  • When you need a starter template that can be freely modified without copyright restrictions

Suitable For

  • Front-end or full-stack developers familiar with React, TypeScript, and pnpm
  • Teams looking to build SaaS or starter-type projects using the TanStack Start ecosystem
  • Individuals or organizations needing a lightweight, customizable template without mandatory copyright constraints

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Node.js >= 24, pnpm >= 12, and Vite Plus (vp)

  2. 2

    Create a project via pnpm create cove or a GitHub template

  3. 3

    Create .env.local according to .env.schema and run vpr env:load to validate environment variables

  4. 4

    Use vpr db generate and vpr db migrate to generate and apply database migrations

  5. 5

    Run vpr dev to start the development server, default address http://localhost:3000

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the Unlicense in the public repository; the free scope is limited to that version's code and does not imply that external services or third-party assets are free.

Must comply with when using

  • You are allowed to freely copy, modify, publish, use, compile, sell, and distribute that version's code, including for commercial purposes.
  • The author waives related copyright through a public domain dedication; the legal effect of this dedication depends on the applicable jurisdiction.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Before use, you must create .env.local yourself and fill in environment variables (including secrets) according to .env.schema, otherwise it will not run.
  • You need to provide your own PostgreSQL database and run migrations; the template itself does not provide database services.
  • Production logging requires integrating a third-party drain service yourself, which may incur external service fees.
  • TanStack Start is in RC stage and may have instability or breaking changes.
  • TanStack Devtools is in alpha and may have breaking changes.
  • Nitro v3 beta is used by default, which is beta software.
  • Drizzle ORM v1 is an RC version and may change.
  • Dependency versions are pinned and may be slightly outdated when creating a project; you need to upgrade them yourself.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; you cannot judge solely based on the code's Unlicense license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

for any purpose, commercial or non-commercial, and by any means

Original License Text

Create a `.env.local` file with your values, based on [`.env.schema`](./.env.schema), then validate them

Original README

Generate the initial migration with drizzle-kit, then apply to your database

Original README

Add a [drain](https://www.evlog.dev/integrate/adapters/overview) when production needs logs sent to your chosen provider.

Original README

TanStack Start is in RC.

Original README

TanStack Devtools is in alpha and may still have breaking changes.

Original README

The template is configured with Nitro v3 beta by default.

Original README

Drizzle ORM v1 is in RC with relations v2.

Original README

Dependency versions are pinned, so they may be slightly outdated when you create your project.

Original README
https://github.com/mugnavo/cove/blob/main/LICENSEhttps://github.com/mugnavo/cove/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 100 / 100
Technologies
Vite · React
Website type
SaaS · Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-10-02
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Vite as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: bf4a9d62f4349b42c1ded77af9dc2e0896f75563cbe55cf1a7fb6233609c2571

2026-10-02T22:04:02.062Z

Source file / repository
# [Cove Stack](https://github.com/mugnavo/cove)

<!-- scaffold:description -->

A minimal starter stack for 🏝️ TanStack Start. [→ Preview here](https://cove.mugnavo.com/)

> [!NOTE]
> [TanStarter is now Cove Stack.](https://github.com/mugnavo/cove/issues/96)

```bash
pnpm create cove
```

- [React](https://react.dev) + TanStack [Start](https://tanstack.com/start/latest) + [Router](https://tanstack.com/router/latest) + [Query](https://tanstack.com/query/latest)
- [Tailwind CSS](https://tailwindcss.com/) + [shadcn/ui](https://ui.shadcn.com/) + [Base UI](https://base-ui.com/) (base-rhea, [`--preset b1au68YWO`](https://ui.shadcn.com/create?preset=b1au68YWO&base=base&template=start&pointer=true))
- [Drizzle ORM](https://orm.drizzle.team/) + PostgreSQL
- [Better Auth](https://better-auth.com/)
- [Vite Plus](https://viteplus.dev/) + [Nitro](https://nitro.build/)

> [!TIP]
> This template is also available as a monorepo, powered by Vite+ and pnpm workspaces. See [mugnavo/cove-monorepo](https://github.com/mugnavo/cove-monorepo).

## Getting Started

#### Prerequisites

- [Node.js](https://nodejs.org/en/download) >= 24
- [pnpm](https://pnpm.io/installation) >= 12
- [Vite Plus](https://viteplus.dev/guide/#install-vp) (`vp`)

#### Setup

1. [Use this template](https://github.com/new?template_name=cove&template_owner=mugnavo) or create a project using our CLI:

   ```bash
   pnpm create cove
   ```

2. Create a `.env.local` file with your values, based on [`.env.schema`](./.env.schema), then validate them:

   ```sh
   vpr env:load
   ```

3. Generate the initial migration with drizzle-kit, then apply to your database:

   ```sh
   vpr db generate
   vpr db migrate
   ```

   https://orm.drizzle.team/docs/migrations

4. Run the development server:

   ```bash
   vpr dev
   ```

   The development server should now be running at [http://localhost:3000](http://localhost:3000).

## Environment variables

[Varlock](https://varlock.dev/) 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.

## Logging

[evlog](https://www.evlog.dev/) is wired into the app through Nitro and emits one structured event per request. Add a [drain](https://www.evlog.dev/integrate/adapters/overview) when production needs logs sent to your chosen provider.

## Deploying to production

[![Netlify Status](https://api.netlify.com/api/v1/badges/66acdee6-8e42-436f-9943-a67cad998f63/deploy-status)](https://app.netlify.com/projects/mugnavo-cove/deploys)

The [vite config](./vite.config.ts) is configured to use Nitro by default, which supports many [deployment presets](https://nitro.build/deploy) like Netlify, Vercel, Node.js, and more.

Refer to the [TanStack Start hosting docs](https://tanstack.com/start/latest/docs/framework/react/guide/hosting) for more information.

## Issue watchlist

- [Router/Start issues](https://github.com/TanStack/router/issues) - TanStack Start is in RC.
- [Devtools releases](https://github.com/TanStack/devtools/releases) - TanStack Devtools is in alpha and may still have breaking changes.
- [Nitro v3 beta](https://nitro.build/blog/v3-beta) - The template is configured with Nitro v3 beta by default.
- [Drizzle ORM v1 RC](https://orm.drizzle.team/docs/relations-v1-v2) - Drizzle ORM v1 is in RC with relations v2.

## Goodies

#### Upgrading dependencies

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`.

#### Scripts

Check [package.json](./package.json) for the full list of available scripts.

- **`auth:generate`** - Regenerate the [auth db schema](./src/lib/db/schema/auth.schema.ts) if you've made changes to your Better Auth [config](./src/lib/auth/auth.ts).
- **`db`** - Run [drizzle-kit](https://orm.drizzle.team/docs/kit-overview) 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.

#### Utilities

- [`auth/middleware.ts`](./src/lib/auth/middleware.ts) - Sample middleware for enforcing authentication on server functions & API routes.
- [`theme-toggle.tsx`](./src/components/theme-toggle.tsx), [`theme-provider.tsx`](./src/components/theme-provider.tsx) - A theme toggle and provider for toggling between light and dark mode.

#### Testing

The [testing foundation](./.agents/testing.md) 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.

## License

Code in this template is public domain via [Unlicense](./LICENSE). Feel free to remove or replace for your own project.

## Ecosystem

- [@tanstack/intent](https://tanstack.com/intent/latest/docs/getting-started/quick-start-consumers) - Up-to-date skills for your AI agents, auto-synchronized from your installed dependencies.
- [awesome-tanstack-start](https://github.com/Balastrong/awesome-tanstack-start) - A curated list of awesome resources for TanStack Start.
- [shadcn/ui Directory](https://ui.shadcn.com/docs/directory), [shoogle.dev](https://shoogle.dev/) - Component directories & registries for shadcn/ui.

## Related templates

- [mugnavo/cove-monorepo](https://github.com/mugnavo/cove-monorepo) - A minimal monorepo version of this template, powered by Vite+ and pnpm workspaces.
- [tsu-moe/tsu-stack](https://github.com/tsu-moe/tsu-stack) - An opinionated and batteries-included monorepo template from Luzefiru, built on cove-monorepo, with Paraglide.js (i18n), Hono, oRPC, and more.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

react-starter-kit

react-starter-kit

A full-stack SaaS monorepo starter built on Vite and React, with Bun, TypeScript, tRPC, Drizzle ORM, Better Auth, Stripe, and Cloudflare Workers. It includes email OTP, passkey, Google OAuth, organizations, subscription billing, Drizzle migrations, seed scripts, and Terraform infrastructure.

Vite · SaaS

vite-react-boilerplate

vite-react-boilerplate

A production-ready Vite + React starter template with TypeScript, Tailwind CSS, TanStack Router/Query/Table, Storybook, React Hook Form + Zod, Vitest and Playwright testing, plus Husky/Commitizen/Commitlint commit conventions.

Vite · Starter

react-vite-admin

react-vite-admin

A backend management starter built on Vite and React, integrating Recoil, React Query, TypeScript, and Axios, with Ant Design-style interface screenshots. Suitable as a starting point for management-side projects, licensed under MIT, with Chinese documentation and common scripts.

Vite · Admin dashboard

typescript-react_best_practices-vite_template

typescript-react_best_practices-vite_template

A Vite + React + TypeScript starter template by CodelyTV, preconfigured with Jest and React Testing Library unit tests, Cypress end-to-end tests, ESLint and Prettier using Codely's shared configuration, GitHub Actions workflows, a Makefile, and Sass.

Vite · Starter

cloudflare-starter-kit

cloudflare-starter-kit

A Cloudflare Workers project scaffolding template maintained by kriasoft, using Vite and TypeScript, with three built-in workspaces: api, app, and edge, and preconfigured local testing, multiple environments, and a GitHub Actions deployment workflow.

Vite · Starter

vitejs-template-react-rescript

vitejs-template-react-rescript

A Vite-based React starter that integrates ReScript and rescript-react into the official Vite React template via @jihchi/vite-plugin-rescript, with Vitest, rescript-vitest, React Testing Library, and Tailwind CSS configured.

Vite · Starter