Documentation is work in progress and not completeEditor
FlashCC/Orientation/Section 2 of 29

Running it

The dev commands, the two ports, the Vite proxy that removes the need for CORS, and why no configuration is an error state.

npm run dev        # both servers via scripts/dev.mjs
npm run typecheck  # app AND server — the build only checks the app
npx vitest run     # 296 tests across 17 files
npm run build      # tsc --noEmit then vite build
  • •App: http://localhost:5173 (Vite, strictPort: false, so it falls forward if taken)
  • •API: http://localhost:8787 (bare node:http, tsx watch)

Vite proxies /api → :8787, which is why every client call is same-origin and the server has no CORS handling at all. scripts/dev.mjs spawns both as separate shell processes; killing the supervisor leaves them running.

No configuration is the free tier

Everything works with no configuration. No Supabase means no accounts and localStorage only; no ANTHROPIC_API_KEY means AI drafting degrades to "write it yourself"; no Stripe means no checkout.

None of these are error states — the free tier is the no-config state.