# [Introduction](https://zerostarter.dev/docs)

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](/docs/resources/ai-skills), a typed API that rejects wrong calls, a one-request local sign-in, and generated [llms.txt](/docs/manage/llms-txt) context. Point Claude Code, Cursor, or your own agent at it and it can build a real feature.

## What's inside [#whats-inside]

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

1. [Quickstart](/docs/getting-started/setup): two commands to a running, signed-in app.
2. [Architecture](/docs/getting-started/architecture): the stack, and why each piece is here.
3. [Project Structure](/docs/getting-started/project-structure): two apps, their packages, one import graph.
4. [The Type-Safe API](/docs/getting-started/type-safe-api): how one type crosses every boundary.
5. [Working with Agents](/docs/getting-started/working-with-agents): the loop an AI agent uses to build here.

---

> To find navigation and other pages in this documentation, fetch the llms.txt file at: https://zerostarter.dev/llms.txt