Finish setup

The app runs in demo mode without keys. Complete these steps when you're ready to enable signup, API keys, and billing.

Readiness: production

1. Create environment file

Copy-Item .env.example apps\web\.env.local
# Or: npm run setup

2. Supabase (auth + database)

  • Create project at supabase.com (Sydney region)
  • Add URL + anon key + service role key to apps/web/.env.local
  • Run migrations: cd apps/web && npx supabase db push
  • Or paste supabase/schema.sql into SQL Editor

3. App URL + cron secret

  • Local: NEXT_PUBLIC_APP_URL=https://dutystack.com.au
  • Production: your Vercel domain
  • Generate CRON_SECRET: run npm run setup:check

4. Stripe (billing)

  • Add STRIPE_SECRET_KEY + publishable key
  • Run npm run setup:stripe to create products
  • Webhook: stripe listen --forward-to localhost:3000/api/webhooks/stripe

5. Resend (optional — rate-update emails)

Add RESEND_API_KEY and verify your domain when ready to email subscribers.

6. Deploy to Vercel

See docs/FINALIZE.md and docs/DEPLOY-RUNBOOK.md. Run npm run finalize after adding keys.

Works right now (no keys)

  • Landing page calculator
  • 80 SEO pages at /calc/{state}/{slug}
  • sitemap.xml + API docs