ZeroStudio
The ZeroStarter school

Start from zero. Ship like a senior.

You have never written a program. Twenty minutes from now, a production-grade SaaS runs on your machine. ZeroStudio is you earning that magic back, lesson by lesson, until you could rebuild every layer yourself.

Day 0, your first lesson
bunx zerostarter init myapp
bun run dev   # a production-grade SaaS, on day 0
TypeScriptTypeScript
BunBun
ReactReact
Next.jsNext.js
Tailwind CSSTailwind CSS
shadcn/uishadcn/ui
Base UIBase UI
HonoHono
ZodZod
PostgreSQLPostgreSQL
Drizzle ORMDrizzle ORM
Better AuthBetter Auth
TanStack QueryTanStack Query
TurborepoTurborepo
DockerDocker
VercelVercel
TypeScriptTypeScript
BunBun
ReactReact
Next.jsNext.js
Tailwind CSSTailwind CSS
shadcn/uishadcn/ui
Base UIBase UI
HonoHono
ZodZod
PostgreSQLPostgreSQL
Drizzle ORMDrizzle ORM
Better AuthBetter Auth
TanStack QueryTanStack Query
TurborepoTurborepo
DockerDocker
VercelVercel
The method

Built for storage, not applause

Tutorials feel great and evaporate in a week. This course is engineered the other way: effortful recall, real terminals, and locked doors that only real understanding opens.

One win per lesson

Lessons are short on purpose, sized to working memory. Each one hands you a single tangible thing you could not do before.

You do it for real

Every lesson ends in your own terminal, editor, and repo, with a check to verify yourself. No sandboxes pretending to be computers.

Answers are final

One quiz attempt, recorded for good, and the next lesson unlocks only when everything before it is truly done. Recall, not recognition.

Senior is observable

Atomic commits, docs in sync, verified UI, safe migrations. The course ends in the practices you can see, not years you must wait.

The destination

Read production code like it is prose

The course is anchored to ZeroStarter, a production-ready SaaS codebase. Every concept points at the place the real code uses it, so what you learn is what you ship.

web/next/src/lib/api/client.ts
import { apiClient, unwrap } from "@/lib/api/client"

// by act 5, this is code you write, not code you copy
const { data, error } = await unwrap(apiClient.health.$get())
The road

Ten acts, each ending in something real

From your first terminal command to directing AI agents with codified playbooks. Every act closes with a capstone you build, not a certificate you download.

It ends with you directing agents

The final act teaches the practices seniors are actually measured by, including the newest one: driving AI agents against a repo's own SKILL.md playbooks, and writing playbooks of your own.

SKILL.mdllms.txtAGENTS.md
# act 9: direct an agent against real playbooks
agent-browser open "$(bunx portless get myapp)"
agent-browser snapshot   # read the UI
agent-browser click "@e5"   # act

Act 0

The Working Machine

Capstone: A real SaaS running on your machine

Act 1

The Language

Capstone: A working CLI, built in Bun

Act 2

Types

Capstone: A real module, typed end to end

Act 3

The Web

Capstone: A page that talks to an API

Act 4

The Interface

Capstone: A real page, on the design system

Act 5

The API

Capstone: A typed endpoint, shipped end to end

Act 6

The Data

Capstone: A schema change, safely migrated

Act 7

Identity

Capstone: A feature gated by role

Act 8

The Machine Room

Capstone: A change shipped through CI

Act 9

The Senior Practices

Capstone: Your own playbook, and a reviewed PR

The machine is waiting

Sign in, run a real SaaS on your own machine today, and start earning it back.