ZeroStarter

Introduction

Modern, type-safe/RPC starter monorepo with foundations for building scalable SaaS products with clean architecture, automation, and great developer experience.

ZeroStarter is a minimal, strictly-typed SaaS monorepo (Bun, Turborepo, and a single type that runs from Postgres to the DOM) built so a human and an AI agent can both read it end to end.

It ships the load-bearing parts of a SaaS (auth, a typed API, a database with migrations, docs, and deploy) already wired together, so your first day goes to your product instead of plumbing.

Both audiences are first-class. The codebase is small and strict on purpose, and it hands an AI agent the same footing it hands you: executable skills, a typed API that rejects wrong calls, a one-request local sign-in, and generated llms.txt context. Point Claude Code, Cursor, or your own agent at it and it can build a real feature.

What's inside

  • Auth & organizations: Better Auth with optional GitHub and Google OAuth (each button appears only when its credentials are set), organizations and teams, and a role ladder that gates the console.
  • A typed API: Hono with end-to-end RPC. The frontend infers its types from the backend, so a wrong call fails at compile time, not in production. The same client reaches WebSockets.
  • Database & migrations: PostgreSQL and Drizzle on Bun's SQL driver, schema-first, with generated migrations you apply in one command.
  • A staff console: who gets in (users and roles, plus an allowlist by domain or address), what they changed (Activity), and the waitlist signups, each built on one reusable data table.
  • Feature flags: the allowlist, API reference, blog, docs, internal docs and waitlist are each one boolean, chosen at init and flippable later.
  • Docs and a blog: Fumadocs with search, scheduled posts, SEO and OG images, and an auto-generated llms.txt: the site you're reading now.
  • A CLI: bunx zerostarter scaffolds a rebranded fork, and later syncs it with the starter without touching what the fork owns.
  • Deploy and release: Docker and Vercel configs that ship the same code you develop against, and a release that is one merge.

All of that is real and working. The dashboard is an auth-gated shell: a signed-in starting point, not a pre-built app. The console is where the worked examples live, and you build your product on both.

Start here

  1. Quickstart: two commands to a running, signed-in app.
  2. Architecture: the stack, and why each piece is here.
  3. Project Structure: two apps, their packages, one import graph.
  4. The Type-Safe API: how one type crosses every boundary.
  5. Working with Agents: the loop an AI agent uses to build here.