REFERENCE
Tech stack
Chosen for long-term SaaS scaling, not just speed. Multi-tenant from day one — every customer is a Clerk Organization, every row is scoped by org_id.
| Layer | Choice | Note |
|---|---|---|
| Frontend | Next.js 16 · React 19 · TypeScript 5 | App Router, RSC, Server Actions, Turbopack |
| Styling | Tailwind CSS 4 | @theme inline tokens — aviation-midnight palette |
| Motion | Framer Motion 12 | Microinteractions, checklist transitions |
| Auth + tenancy | Clerk (planned) | Organizations = customers, RBAC, third-party invites |
| Database | Neon Postgres + Drizzle (planned) | Serverless Postgres, type-safe schema-as-code |
| Storage | Vercel Blob (planned) | Inspection photos, certificates, service records |
| Hosting | Vercel | Manual deploys via CLI — apron-app.vercel.app |
| Billing | Stripe (later) | Subscriptions via Clerk's Stripe integration |
| Resend (later) | Interval / defect / work-order notifications | |
| AI service | FastAPI (later) | Maintenance recommendations microservice |
Current build runs entirely on mock data (src/lib/mock.ts). Clerk and Neon plug in when persistence becomes essential — the data model already mirrors the production schema.