Free surplus food, live on the map near you.
- Role
- Author
- Year
- 2026
- Runs on
- Any browser, installable as an app
- Stack
- Astro · React · MapLibre · Fastify · PostGIS
The idea
Good food gets thrown away a few streets from someone who would eat it.
In Germany there is already a culture for this: community fridges and Fairteiler, shared shelves where anyone can leave food or take it. The hard part is knowing, right now, which one has something in it, or where a market stall just put out its leftovers.
Nimmo is a live map for that. Permanent places, the fridges and Fairteiler, are kept apart from short-lived reports such as market leftovers and curbside finds. The reports come from the people nearby, and they expire unless someone confirms the food is still there.
How it works
- 1
Spot free food
A community fridge, a Fairteiler shelf, leftovers at a market stall, or a box at the curb.
- 2
Snap a photo
Report what is there with an optional photo and food tags: bread, produce, dairy, prepared, canned, drinks.
- 3
It goes on the map
Reports without a photo go live at once. Reports with a photo wait until the photo check passes.
- 4
Still there?
People nearby vote "still there" or "empty". A report expires after 3 hours unless someone confirms it.
A "still there" vote keeps a report alive for at least 45 more minutes, and the API only counts votes from within 250 m. Anyone can suggest a new fridge or Fairteiler; it stays pending until it is approved.
Privacy
Photos of food, not of people.
Every photo is checked by Gemini before it is shown. It rejects a recognisable face, the inside of a private home, a document or screen with personal data, or anything unrelated to food sharing. For the photos it accepts, it estimates how full the fridge or shelf is and tags the kinds of food.
The app asks for consent before the camera opens. Photos are re-encoded on the server, which drops EXIF and GPS data, and expired or rejected reports are deleted with their photos every few minutes. IP addresses are only kept as a hash with a salt that changes every day, and that hash is all the rate limits use.
Stack
| Web | Astro, React, MapLibre GL JS, TypeScript |
|---|---|
| API | Fastify on Node, sharp for images |
| Database | PostgreSQL 16 with PostGIS |
| Photo check | Google Gemini on Vertex AI |
| Deploy | Docker Compose, nginx, GitHub Actions |
The interface is in German and English, with German as the default, and has a light and a dark theme. It ships a web manifest and a service worker, so you can install it on your phone like an app.
Try it
Seen free food today? Put it on the map.
Nimmo is live at nimmo.aryanmoradi.com. It works best on a phone, out on the street.