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.sqlinto SQL Editor
✓ 3. App URL + cron secret
- Local:
NEXT_PUBLIC_APP_URL=https://dutystack.com.au - Production: your Vercel domain
- Generate
CRON_SECRET: runnpm run setup:check
✓ 4. Stripe (billing)
- Add
STRIPE_SECRET_KEY+ publishable key - Run
npm run setup:stripeto 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