
01 — SaaS web mobile-first (PWA)
Croma
L'assistant nutritionnel qui te dit combien et quoi manger.
Contexte
Calcule BMR, TDEE et macros dès l'inscription, puis accompagne au quotidien : repas, scan de code-barres, hydratation, menus générés par IA depuis le frigo, liste de courses chiffrée.
RôleProjet personnel : conception et développement de bout en bout.
Statut MVP complet (6 milestones) + fonctionnalités V1 à V6 livrées ; mise en production en préparation (pages légales, déploiement)
Le problème
Les apps de nutrition sont des compteurs de calories : elles enregistrent ce qu'on a déjà mangé. Pour quelqu'un en sèche, en prise de masse ou un étudiant à petit budget, la vraie question est en amont : combien et quoi manger.
Ce que j’ai construit
- Moteur de calcul nutritionnel (Mifflin-St Jeor, TDEE selon l'activité, macros selon l'objectif) isolé en fonctions pures, 100 % de couverture de tests
- Onboarding en 5 écrans thématiques, puis dashboard quotidien : anneau de calories, répartition des macros, hydratation
- Suivi des repas : recherche d'aliments, scan de code-barres (OpenFoodFacts + zxing-wasm), recettes multi-ingrédients, portions rapides, répéter un repas en un geste, historique et tendances
- IA (Gemini) : menus générés depuis le placard/frigo, liste de courses estimée, analyse de repas par photo, assistant conversationnel avec quota journalier, suggestion proactive selon les macros restants
- Placard, hydratation, préférences et allergènes (14 allergènes réglementaires)
- Comptes & paiement : Better Auth (email + Google), Stripe (abonnement Premium, essais par fonctionnalité IA), emails Resend
- RGPD : export des données et suppression de compte ; analytics soumis au consentement (PostHog), suivi d'erreurs Sentry
- Design : système visuel inspiré de l'étiquette nutritionnelle, logo dessiné à la main, mode sombre, transitions de navigation à deux panneaux
Défis techniques
- Garder le calcul nutritionnel pur, testé et traçable, séparé de l'UI et de la base
- Fonctionnalités IA qui se dégradent proprement sans clé API (l'app ne plante jamais pour un service tiers manquant)
- Gestion du « jour » utilisateur en fuseau Europe/Paris (un repas à 23h30 reste sur la bonne journée)
- Recherche d'aliments classée par pertinence (index trigramme PostgreSQL)
- Sécurité : audit dédié, limitation de débit, ordre des webhooks Stripe
Qualité et tests
- 24 modèles de données, 27 migrations
- 55 fichiers de tests (unitaires + E2E Playwright)
- 22 écrans
- Accessibilité visée : WCAG 2.2 AA sur les parcours critiques
Stack
Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · shadcn/ui · Prisma 7 · PostgreSQL (Neon) · Better Auth · Stripe · Resend · Vercel AI SDK + Gemini · Sentry · PostHog · Zod · Vitest · Playwright
Galerie
Liens
Code privé — pas de lien public.