
Route definitions, Zod schemas, entities and repositories live in one package that the backend, the web app and the CDK infrastructure all read from. An endpoint gets defined once and the types follow it everywhere. That's what kept 34 services from drifting apart.
An Express shim wraps the exact Lambda handlers and route definitions that ship to AWS, with Docker Postgres standing in for Aurora and MinIO for S3. There is no separate local implementation to drift out of sync.
Stripe subscriptions and creator payouts, the webhooks that reconcile them, and a FitCredits ledger for everything a subscription doesn't cover.
The admin app behind the closed alpha, the subscription-funnel analytics, comment moderation with ban write-enforcement, and a nightly sweep that marks missed days across every in-progress training program.
The test platform
499 specs across 48 subjects, 1,700 individually tagged assertions. A suite that size stays useful only if it's governed like a product:
Specs are written in a Given/When/Then wrapper over Playwright, and every scenario declares the one suite it belongs to. "Which tests block a merge" is a property of the code, not tribal knowledge.
Three tiers, one decision rule: does the rest of the suite depend on it — smoke. Would breakage cost revenue, reputation, or regulation — acceptance. Everything else — regression. Recategorizing all 499 files against that rule was its own PR.
Per merge: a smoke pass, then regression sharded eight ways, each shard signing in with its own Cognito users so concurrent shards never collide. The full matrix runs nightly. Moving the gate to self-hosted runners cut spend without slowing the loop.
The same specs run against the deployed dev backend or the dockerised local stack. A health-check project gates every run, and global setup provisions — and sweeps — its own test users in Cognito and Aurora.












