ADR-01: Stack technique
Better-T-Stack — Bun + Elysia + Next.js + Drizzle + PostgreSQL
Contexte
Wcare est un SaaS B2B avec deux interfaces (dashboard + page publique de signalement), un backend API, et des intégrations externes (WhatsApp, email). Le choix de stack doit privilégier la vélocité de développement, la type-safety, et la capacité à itérer vite.
Décision
Better-T-Stack — le stack de référence déjà maîtrisé.
| Couche | Choix | Raison |
|---|---|---|
| Runtime | Bun | Performance, bundler intégré, natif TypeScript |
| Backend | Elysia | Type-safe, léger, intégration tRPC native |
| API | tRPC | Type-safety end-to-end, zéro code-gen |
| Frontend | Next.js 16 | App Router, RSC, écosystème React mature |
| ORM | Drizzle | Type-safe, SQL-first, migrations, léger |
| DB | PostgreSQL | Robuste, jsonb pour les customizations QR |
| Auth | Better Auth | Sessions, magic links, adapters Drizzle |
| UI | Tailwind v4 + shadcn | Design system neo-brutalist personnalisé |
| Monorepo | Nx + Bun workspaces | Cache, task orchestration |
| Lint/Format | Biome | Rapide, tout-en-un |
Alternatives écartées
| Alternative | Raison du rejet |
|---|---|
| Express/Fastify | Pas de type inference aussi poussée qu'Elysia |
| Prisma | Plus lourd que Drizzle, code-gen obligatoire |
| REST pur | Perte de la type-safety end-to-end |
| MongoDB | Pas adapté aux relations du modèle (établissement → WC → signalement) |
| Remix | Moins mature pour le B2B dashboard que Next.js |
Conséquences
- Positif : Stack déjà maîtrisé, itération rapide, DX excellente
- Positif : Type-safety de la DB au frontend sans code-gen
- Attention : Elysia et Bun sont encore jeunes — suivre les breaking changes
- Attention : Next.js 16 a des API async à respecter (headers, cookies)