Enforced

Turnkey checklist

This is not a wiki. The API refuses production money if these are red. Demo ignores them on purpose.

Live process

Investor demo · us-west

demobills today $0US-CA

database

memory

cache

memory

broker

memory

payments

simulated

auth

memory

uploads

memory

  • Investor demo runs with zero vendor accountsdemo

    Memory adapters + simulated Stripe/IoT/Twilio. npm run dev is enough.

  • Durable Postgres (DATABASE_URL)production

    Unset on purpose. Set DATABASE_URL to Neon or Supabase to persist (PITR backups included by those hosts).

  • Non-default JWT_SECRETproduction

    Using the built-in demo secret. Set JWT_SECRET before GO_LIVE.

  • Stripe Connect for real moneyproduction

    Holds post to the in-process ledger only. No card network fees.

  • Compliance jurisdiction ()production

    US-CA is the first live state. Other states stay dark until counsel enables them.

  • California counsel reviewed program formsproduction

    On-site contracts are templates. Set LEGAL_COUNSEL_REVIEWED=true after a CA attorney signs off.

  • 1099 + local tax collection switchesproduction

    TAX_FORM_1099_ENABLED and TAX_COLLECTION_ENABLED must be true before live payouts.

  • Point-in-time backupsproduction

    Memory mode has nothing to back up. Persistence and backups arrive with DATABASE_URL.

Backups: none · memory · n/a — process restart wipes demo state. Upgrade knobs: DATABASE_URL, REDIS_URL.

Recommended sequence

  1. Keep pitching on demo (no env). $0.
  2. Create a Neon or Supabase project. Set DATABASE_URL. Run npx prisma migrate deploy. You now have persistence and backups. Still no GO_LIVE.
  3. Set JWT_SECRET to a long random value.
  4. California attorney reviews /legal. Surplus-lines / MGA partner can bind PVSP trips. Then LEGAL_COUNSEL_REVIEWED=true.
  5. Turn on Stripe Connect. Set STRIPE_SECRET_KEY.
  6. Set TAX_FORM_1099_ENABLED=true and load TAX_CITY_BPS_JSON when counsel provides rates. TAX_COLLECTION_ENABLED=true.
  7. COMPLIANCE_JURISDICTION=US-CA. GO_LIVE=true.
  8. REDIS_URL when you add the realtime process or a second instance.
.env.local (production)
DATABASE_URL=postgresql://...        # knob 1 — durable DB + PITR
JWT_SECRET=replace-the-demo-secret
GO_LIVE=true
COMPLIANCE_JURISDICTION=US-CA
LEGAL_COUNSEL_REVIEWED=true
TAX_FORM_1099_ENABLED=true
TAX_COLLECTION_ENABLED=true
STRIPE_SECRET_KEY=sk_live_...
REDIS_URL=rediss://...             # knob 2 — multi-process presence