Le pari
Reproduire le feel apple.com — scrolls millimétrés, produits en 3D — tout en encaissant par Mobile Money sur le marché camerounais.
Architecture
Monorepo Turborepo bâti sur un seul contrat Zod (@repo/shared) qui génère les types, les DTO de l'API et les resolvers de formulaires. Front et back parlent le même langage : une modification du contrat casse la compilation là où il faut, pas en production.
packages/shared— schémas Zod → types + DTO + formatter XAFapps/api— NestJS 10 + Prisma + PostgreSQL (JWT argon2)apps/web— Next.js 15 + React 19 + Tailwind v4
Décisions clés
- Prix recalculé côté serveur au checkout : le panier client dit quoi, jamais combien. Stock décrémenté de façon transactionnelle — pas de survente.
- Mobile Money via agrégateur (MTN MoMo / Orange Money), mode sandbox par défaut, retour de paiement par webhook signé HMAC-SHA256.
- Showroom : Lenis (smooth scroll), GSAP (timelines synchronisées au scroll), React Three Fiber + drei (produits 3D).
Stack
Next.js 15 · NestJS 10 · Prisma · PostgreSQL · GSAP · Lenis · React Three Fiber · Turborepo
Retour d'expérience détaillé : iPhone Cameroon : un showroom Apple qui encaisse en Mobile Money.