Vitrine
Tableau de bord, version mobile

01 — SaaS web mobile-first (PWA)

Croma

L'assistant nutritionnel qui te dit combien et quoi manger.

juillet → octobre 2026 (≈ 200 commits, 90 pull requests) · Projet personnel

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
~200
commits
55
fichiers de tests
22
écrans
100 %
de couverture du moteur

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