Skip to main content
Next.jsAPI RESTDockerIA

Anti-Gaspi : Solution mobile-first contre le gaspillage alimentaire

2026

Vue d'ensemble de l'application Anti-Gaspi

Vue de l'application Anti-Gaspi

TL;DR : Anti-Gaspi

Le projet :Une app mobile-first qui scanne les code-barres alimentaires et alerte avant la péremption.

La Stack :Next.js, TypeScript, Docker, API OpenRouter, Open Food Facts.

Le défi :Intégrer une couche IA invisible qui reformule les noms bruts de produits en libellés lisibles pour l'utilisateur.

Le résultat :Utilisé au quotidien. Connecté à Home Assistant et au dashboard e-ink pour des alertes automatiques via Telegram.

Un yaourt périmé de trop au fond du frigo. J'ai codé une app pour régler ça : scan du code-barres, reconnaissance automatique via Open Food Facts, nettoyage IA du nom produit, alertes domotiques. Le tout auto-hébergé dans mon homelab.

01.Le problème

Un mardi soir, devant le frigo. Un yaourt grec périmé depuis huit jours que personne n'avait remarqué. La troisième fois en un mois.

Ce genre de micro-gaspillage, pris isolément, ça ne pèse rien. Mais répété semaine après semaine, ça finit par irriter. Et quand quelque chose m'irrite assez longtemps, je finis par sortir VS Code.

Mon besoin tenait en trois gestes : scanner un produit, saisir sa date de péremption, recevoir une alerte avant qu'il ne soit trop tard. Pas un ERP alimentaire. Juste ça.

02.La solution technique

Vue de la partie ajout via code barre
Vue de la partie ajout manuel
Workflow d'ajout
La liste des produits

Interface d'ajout des produits via scan du code-barres

Le fonctionnement est direct. On scanne le code-barres avec la caméra du téléphone. L'app identifie le produit via Open Food Facts, une base de données alimentaire mondiale, affiche la photo et le nom. Il reste à taper la date de péremption, et c'est bouclé.

Un point sur lequel j'ai passé du temps : les noms de produits bruts dans les bases de données, c'est souvent imbuvable. Des codes techniques, des abréviations absconses, des majuscules partout. J'ai branché une couche IA (via l'API OpenRouter) qui reformule chaque nom en quelque chose de lisible et naturel. L'utilisateur ne voit rien. Le résultat est juste propre.

Une fois les produits enregistrés, la liste joue sur un code couleur immédiat : blanc pour ce qui est frais, bleu pour ce qui approche, orange pour ce qui périme dans les 3 jours, rouge pour ce qui a dépassé la date. Pas besoin de chercher les dates. Un coup d'œil fait le tri.

03.Stack & Architecture

Côté stack : Next.js gère le frontend et le backend, TypeScript apporte la rigueur, et une base de données locale légère évite de monter un serveur dédié pour un projet personnel.

Le tout tourne dans des conteneurs Docker, déployés dans mon homelab. Simple, auto-hébergé, reproductible.

Le fil conducteur de ces choix ? La praticité. Un seul dépôt, une stack cohérente, un déploiement en une commande. Pas de sur-ingénierie pour un outil domestique, mais des fondations solides qui tiennent dans le temps.

04.Intégration dans l'écosystème domotique du domicile

Vue d'une notification Telegram
Vue du dashboard e-ink

Notification Telegram

Scanner et stocker, c'est bien. Être alerté avant que ça finisse à la poubelle, c'est mieux.

L'application expose une API REST qui ouvre ses données aux autres services de la maison. Home Assistant s'y connecte pour surveiller les péremptions et m'envoyer une notification Telegram quand un produit arrive en zone critique. Mon dashboard e-ink affiche en permanence les produits qui périment dans les 3 prochains jours, toujours visible, sans action de ma part.

Le résultat ? Un filet de sécurité alimentaire discret, intégré au quotidien. Pas de friction, pas de notification superflue. Juste le bon signal, au bon moment.

Anti-Gaspi ne deviendra jamais un produit commercial. Ce n'est pas le but. Mais il tourne, il est utilisé tous les jours, et il m'a permis de creuser des sujets qui comptent pour moi : expérience mobile, auto-hébergement, IA comme couche d'enrichissement invisible.

Ce que j'aime dans ce genre de projet : partir d'un irritant domestique banal et le transformer en quelque chose de concret, de fonctionnel, de fini. C'est exactement le muscle que je veux exercer au quotidien.