Anti-Gaspi: A Mobile-First App to Fight Food Waste at Home
2026
A view of the Anti-Gaspi app
TL;DR : Anti-Gaspi
The Project:A mobile-first app that scans food barcodes and alerts you before anything expires.
Stack:Next.js, TypeScript, Docker, OpenRouter API, Open Food Facts.
The Challenge:Wiring up an invisible AI layer that rewrites cryptic raw product names into clean, readable labels.
The Result:Used daily. Hooked into Home Assistant and the e-ink dashboard for automatic Telegram alerts.
One expired yogurt too many in the back of the fridge. So I built an app: scan the barcode, let AI clean up the product name so it's actually readable, and get alerts from Home Assistant before anything hits the trash. All self-hosted in my homelab.
01.The Problem
A Tuesday night, standing in front of the fridge. A Greek yogurt that had been expired for eight days and nobody noticed. Third time that month.
That kind of tiny waste, on its own, means nothing. But week after week, it starts to grind on you. And when something grinds on me long enough, I end up opening VS Code.
What I needed boiled down to three moves: scan a product, punch in the expiration date, get a heads-up before it's too late. Not a food ERP. Just that.
02.The Technical Solution
Product addition interface via barcode scan
The flow is dead simple. You scan the barcode with your phone camera. The app looks up the product through Open Food Facts, a global food database, and shows you the photo and name. All that's left is typing in the expiration date. Done.
One thing I spent real time on: raw product names in databases are often unreadable. Technical codes, cryptic abbreviations, caps everywhere. I hooked up an AI layer (through the OpenRouter API) that rewrites each name into something clean and natural. The user doesn't notice a thing. The result just looks right.
Once products are saved, the list runs on an instant color code: white for fresh, blue for coming up, orange for expiring within 3 days, red for past due. No need to read dates. One glance sorts it out.
03.Stack & Architecture
On the tech side: Next.js handles both frontend and backend, TypeScript keeps things tight, and a lightweight local database means no dedicated server for a personal project.
The whole thing runs in Docker containers, deployed in my homelab. Simple, self-hosted, reproducible.
The common thread behind those choices? Practicality. One repo, a clean stack, deploy in one command. No over-engineering for a home tool, but solid foundations that hold up over time.
04.Plugging Into the Home Automation Ecosystem
Telegram notification
Scanning and storing is fine. Getting a warning before food ends up in the trash is better.
The app exposes a REST API that opens up its data to other services in the house. Home Assistant taps into it to watch expiration dates and fires me a Telegram notification when a product enters the danger zone. My e-ink dashboard shows products expiring within the next 3 days at all times, always visible, without me lifting a finger.
The result? A quiet food safety net, woven into daily life. No friction, no junk notifications. Just the right signal, at the right time.
Anti-Gaspi will never become a commercial product. That's not the point. But it runs, it gets used every single day, and it let me dig into topics I genuinely care about: mobile UX, self-hosting, AI as an invisible enrichment layer.
What I love about projects like this: you start with a mundane household annoyance and turn it into something concrete, functional, finished. That's exactly the muscle I want to work every day.