Add a Quiz Questions content page (list/filter/create/edit/activate- deactivate, no delete since quiz_answers reference questions by id), route it under manage_questions, and add a sidebar entry. Fix DaresPage so intensity (1-5) is editable and shown in the table; previously every admin-created dare silently defaulted to intensity 1. Add authored min/max intensity fields to DarePacksPage: no trigger or worker in apps/api computes these columns, so they are admin-set thresholds gating pack visibility, not derived aggregates. avg_intensity is displayed read-only since nothing writes to it and it is not used for filtering. Extract dare intensity and quiz option validation into small lib modules with focused unit tests.
Sauci
Sauci is a couples connection product built as a full-stack npm/Turborepo workspace.
Applications
| Path | Surface |
|---|---|
apps/mobile |
Expo React Native customer app |
apps/admin |
Vite/React administration app |
apps/web |
Next.js marketing and redemption app |
apps/supabase |
database, auth, realtime, storage, and Edge Functions |
apps/mcp |
authenticated internal MCP service |
packages/shared |
shared TypeScript contracts |
Bootstrap and run
Use Node 20.10.0 from .nvmrc, Docker-compatible containers, and tmux.
npm ci
scripts/dev-local.sh reset
scripts/dev-local.sh up
The launcher starts local Supabase, Edge Functions, web, admin, MCP, and Expo in one tmux session. See local stack documentation for ports, logs, native launch commands, and troubleshooting.
Verify
npm run verify:fast # lint, typecheck, unit/contract tests
npm run verify:full # fast checks, builds, Supabase integration
npm run verify:e2e # running-stack Playwright journeys
npm run verify # complete pre-PR gate
Native black-box flows use npm run test:mobile:e2e. Pull requests run static
and full-stack gates and retain browser traces/screenshots/videos on failure.
Agent harness
Start with AGENTS.md and the documentation index.
Task/risk agent routing lives in docs/agents/routing.md,
repository skills live under .codex/skills, and verified lessons follow the
learning promotion lifecycle.
Database schema changes must use committed files in apps/supabase/migrations.
Remote migration tools and DDL through MCP SQL execution are forbidden.