Skip to content
Client OS
Menu

How it works

How it works

The loop has five steps: clone, run, extend, check and deploy. Here is each one, with the command or file that does it.

The loop

  1. Step 1

    Clone

    Clone the repository (or copy it with `npx degit`) and run `pnpm install`. One pnpm workspace holds every app and package.

  2. Step 2

    Run

    `pnpm supabase:start` boots a local Supabase stack in Docker. `pnpm dev` runs process-compose, which applies the Drizzle migrations, seeds demo data and demo accounts, then starts the API and the web app.

  3. Step 3

    Extend

    Add a route with an OpenAPI definition in apps/api, run `pnpm openapi:dump`, and the kubb-generated client in packages/api-client gives the web app typed hooks for it. The clientos routes show the pattern end to end.

  4. Step 4

    Check

    CI runs typecheck, an OpenAPI drift check, an ESM load smoke test, lint, migrations against a fresh Postgres, tests and a Prettier check on every pull request.

  5. Step 5

    Deploy

    The API deploys to Render (render.yaml) or as a Docker image; the web app deploys to Vercel; Supabase Cloud holds auth, Postgres and storage. docs/PROD-DEPLOY.md is the first-deploy checklist.

Skip the setup week

Clone it, run five commands, and start on the part that is actually your product.