Getting Started
Install the starter, configure the minimum env, migrate, seed, and run it locally
Getting Started
Purpose
Get the app running locally with the smallest reliable setup path.
What you need
- Node.js 20+
pnpm- PostgreSQL
- Stripe test keys if you want to test billing
- Resend credentials only if you want email and magic-link flows to work end to end
Files to touch
.env.env.example
First run
pnpm install
cp .env.example .env
docker compose up -d
pnpm db:migrate
pnpm db:seed
pnpm devIf you already have Postgres, skip Docker and point POSTGRES_URL at your own instance.
Minimum environment variables
These are the values to care about first:
POSTGRES_URLAUTH_SECRETBASE_URLSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRET
Optional but commonly needed:
RESEND_API_KEYEMAIL_FROMGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGITHUB_CLIENT_IDGITHUB_CLIENT_SECRETNEXT_PUBLIC_ACCOUNT_MODE
The full source of truth is .env.example.
Seeded users
After pnpm db:seed, you can sign in with:
demo@starter.local/demo123admin@admin.com/admin123
If something fails
- Database issues: reset your local state instead of fighting drift. Use
pnpm db:resetwhen the schema is broken locally. - Auth issues: check
AUTH_SECRETandBASE_URL. - Billing issues: confirm the Stripe test keys are set before you test checkout or the customer portal.
Next step
Once the app boots, go straight to Customization.