Getting started
Prerequisites
Section titled “Prerequisites”- Node 26 (see
.nvmrc) and pnpm 12 - Docker — the local Supabase stack runs in containers
First run
Section titled “First run”pnpm installpnpm db:start # local Supabase: Postgres, Auth, Mailpit… (first run pulls images)pnpm env:local # writes .env from the running stackpnpm db:seed:dev # one user per role (local only)pnpm dev # http://localhost:3000Sign in with any of the local users — they exist only in your local database:
| Password | Role | |
|---|---|---|
admin@example.com |
admin123 |
Admin |
editor@example.com |
editor123 |
Editor |
user@example.com |
user123 |
Default user |
pnpm db:seed:dev also restores their passwords and roles if you changed them while testing.
pnpm db:start applies the migrations and supabase/seed.sql. pnpm db:reset recreates the
database from scratch (migrations, seed, local users, regenerated types).
Local services
Section titled “Local services”| Service | URL |
|---|---|
App (pnpm dev) |
http://localhost:3000 |
| Supabase API | http://127.0.0.1:54321 |
| Postgres | postgresql://postgres:postgres@127.0.0.1:54322/postgres |
| Supabase Studio | http://127.0.0.1:54323 |
| Mailpit — every auth email lands here | http://127.0.0.1:54324 |
Docs (pnpm docs:dev) |
http://localhost:4321/ |
Only one local Supabase project can use these ports at a time. If another project’s stack is running,
stop it first: pnpm exec supabase stop --project-id <other>.
Before you push
Section titled “Before you push”pnpm typecheck && pnpm lint && pnpm testpnpm test:e2e # builds, then runs the end-to-end suites against the local stackCI runs the same checks on every pull request — see Testing.