Monorepo Architecture
The repository is organized as a pnpm workspace with Turbo for task orchestration.
Structure:
apps/
web/ # Next.js app (App Router)
functions/ # Firebase Cloud Functions (v2 HTTPS + schedulers)
packages/
shared/ # Shared JS utilities (published via workspace)
Root configuration:
pnpm-workspace.yamldeclaresapps/*andpackages/*.package.jsonscripts use Turbo to run dev/build across apps.firebase.jsonconfigures Functions source and emulators.
Key decisions:
- Use workspace dependency
@repo/sharedinsideapps/web. - Node 22 at root; Functions specify node 20 runtime.
- Stripe and Firebase Admin only used server-side via API routes or Functions.