RecettesApp
Application de gestion de recettes orientée nutrition — calcul automatique des macros, planning hebdomadaire et liste de courses par rayon.
Next.jsTypeScriptPrismaPostgreSQLPWA
15 février 2026
Le projet
Une application de recettes pensée pour les athlètes : chaque ingrédient est lié à Open Food Facts pour un calcul automatique des calories et macronutriments. Le planning hebdomadaire affiche les calories consommées vs l'objectif quotidien, et la liste de courses se génère automatiquement par rayon de supermarché.
Stack technique
| Composant | Technologie |
|---|---|
| Framework | Next.js 16, React 19, TypeScript |
| Base de données | PostgreSQL 17 + Prisma 7 |
| Auth | Better-Auth (email/password) |
| Nutrition | Open Food Facts API |
| Drag & drop | @dnd-kit |
| Export | @react-pdf/renderer |
| Import | cheerio (web scraping) |
| Tests | Vitest (~179 tests) |
Fonctionnalités
- Recettes : création avec recherche d'ingrédients (autocomplete Open Food Facts), calcul automatique des macros
- Planning : grille 7 jours × 4 repas (petit-déj, déjeuner, dîner, snack) en drag & drop, suivi calories vs objectif
- Liste de courses : agrégation des ingrédients du planning, groupés par rayon (frais, épicerie, surgelés...)
- Collections : organisation des recettes par thème
- Import : coller une URL de recette → parsing automatique des ingrédients
- Export PDF : recettes exportables en PDF propre
- PWA : installable, fonctionne hors-ligne (cache-first pour les assets)
Architecture
L'application utilise les Server Actions de Next.js pour les mutations et TanStack Query pour le cache côté client. Les macros sont dénormalisées sur chaque recette pour éviter des calculs coûteux à chaque lecture.
Client (React 19)
├── TanStack Query (cache)
├── Server Actions (mutations)
└── /api/nutrition/search → Open Food Facts
│
Prisma → PostgreSQL
Ce que j'ai appris
- Utiliser les Server Actions Next.js pour un CRUD complet
- Intégrer une API externe (Open Food Facts) avec proxy et debounce
- Implémenter du drag & drop accessible avec dnd-kit
- Structurer une suite de 179 tests avec Vitest