Eine Vorrats-App für eine Familie oder eine WG: Barcode scannen, das Haltbarkeitsdatum mit einem Tipp wählen, und Vorrat und Einkaufsliste sind auf allen Handys gleich, auch offline. Was aufgebraucht ist, landet von selbst auf der Liste, und am Vorabend kommt die Erinnerung, was abläuft.
**Dispensa** (italienisch für „Vorratskammer“) ist die App, mit der ein Haushalt weiß, was er hat, was abläuft und was fehlt. Jeder öffnet sie auf dem Handy oder am Computer im Browser; auf dem iPhone kommt sie auf den Home-Bildschirm und funktioniert wie eine App. Es ist ein persönliches Projekt für die Haushalte, die ich einlade, und von hier aus probiert man es ohne Konto in einem erfundenen Haushalt aus, Casa Ginestra, mit vollem Vorrat.
**Was sie kann**
- **Barcodes mit der Kamera.** Im Browser liest sie die BarcodeDetector-API, wo es sie gibt, sonst ZXing-C++, kompiliert zu WebAssembly – der Weg für Safari auf dem iPhone. Lässt sich ein Code nicht lesen, tippt man das Produkt ein, mit Vorschlägen aus dem Haushalt und dem Katalog. - **Name und Foto von Open Food Facts**, der freien Datenbank für Lebensmittel, mit der Namensnennung, die ihre Lizenz verlangt. - **Das Datum mit einem Tipp**, mit vorgeschlagenen Tagen für jedes Produkt und dem Unterschied zwischen „zu verbrauchen bis“ und „mindestens haltbar bis“. - **Die gemeinsame Einkaufsliste**, in Echtzeit und auch ohne Empfang im Supermarkt. Was aufgebraucht ist, kommt von selbst darauf. - **Die Erinnerung am Vorabend**, eine Push-Benachrichtigung zu der Uhrzeit, die der Haushalt wählt; auf dem iPhone kommt sie mit Dispensa auf dem Home-Bildschirm. - **Der Haushalt auf Einladung**: Wer ihn verwaltet, gibt einen Code, der 48 Stunden und nur einmal gilt; ohne Einladung gibt es keine Anmeldung.
**Das Schwierigste: zwei Handys ohne Netz.** Wenn zwei Personen offline den letzten Joghurt essen, darf der Vorrat nichts verlieren. Mengen werden nie überschrieben: Jede Aktion ist eine Bewegung, und Bewegungen addieren sich, egal in welcher Reihenfolge sie beim Server ankommen. Der Rest wird nach einmal geschriebenen Regeln zusammengeführt, gleich auf Handy und Server; die einzige Wahl, die die App verlangt, ist die zwischen zwei Daten für dieselbe Packung.
**Das andere: die Grenzen von Open Food Facts.** Die Handys rufen es nie direkt auf: Sie fragen den Server, der einen gemeinsamen Cache für alle Haushalte hat, höchstens 12 Produkte pro Minute über eine Warteschlange liest und das Produkt inzwischen speichern lässt; den Namen bekommt es, sobald es geht.
**Was noch fehlt.** Die Android-App mit Capacitor und dem Scanner von Google steckt im Code, wird aber noch nicht verteilt. „Cosa cucino?“ (Was koche ich?) gleicht auf dem Handy, auch offline, Rezepte mit dem ab, was bald abläuft, aber das Rezeptbuch, das ich im Verwaltungsbereich schreibe, ist noch leer.
Vue 3 und TypeScript, Fastify und PostgreSQL, in Docker auf meinem Server: App und Datenbank bleiben unter 250 MB Speicher und brauchen im Ruhezustand etwa 120. Jede Änderung durchläuft 336 automatische Tests.
Konzeption, Full-Stack-Entwicklung und Veröffentlichung · 2026
Vue.js, Fastify, PostgreSQL, IndexedDB