Blau beleuchtete Tastatur
PROJEKT · ANDROID-APP + HEIMSERVER
Platzhalter-Icon: Kochtopf

Küchenapp

● In Nutzung · wird laufend erweitert · privat

Eine Küchen-App für Android, die weiß, was im Vorrat ist, aus Resten ein Rezept macht, den Einkaufszettel schreibt und die Garzeiten kennt. Offline, ohne Konto, ohne Cloud. Und weil bei uns mehrere Handys mitkochen, gleicht ein Mini-Server zu Hause die Daten per Tailscale ab.

Flutter / Dart Riverpod Drift / SQLite ML Kit (Barcode, OCR) Python / FastAPI Tailscale Gemini oder Ollama mit KI-Unterstützung

01Warum überhaupt?

Bei uns lief die Küche lange über Zettel am Kühlschrank, Chat-Nachrichten („bring bitte Milch mit") und das, was man eben so im Kopf hat. Ergebnis: doppelt gekaufter Reis, abgelaufener Joghurt ganz hinten im Fach und jedes Mal die Frage, wie lange die Pommes jetzt in den Airfryer müssen. Ich wollte einen Ort dafür, der ohne Konto und ohne Cloud auskommt und auch dann funktioniert, wenn gerade kein Netz da ist.

Fertige Apps gab es natürlich, aber jede wollte entweder ein Konto, eine Cloud oder ein Abo. Und keine kannte meine Geräte. Also: selbst bauen, wieder mit Flutter, das kannte ich schon von Stillfeed.

02Was die App kann

Speisekammer

Jeder Artikel mit Kategorie, Menge, Status (ist da, bald leer, nachkaufen), MHD und Stern für den Standardvorrat. Erfassen per Barcode-Scan oder Foto vom Etikett, die Texterkennung liest Name und MHD.

Resteverwerter

„Muss heute weg!" sammelt, was laut MHD dringend ist, und die KI macht daraus ein komplettes Rezept mit Mengen und Schritten. Wahlweise Gemini oder ein Ollama auf dem eigenen Heimserver, dann bleibt alles im Haus.

Einkaufsliste & Supermarkt-Modus

Füllt sich selbst aus leerem Standardvorrat. Eine Chat-Nachricht wie „Milch, 6 Eier, 2 Paprika" wird per Teilen direkt zur Liste. Im Laden: große Checkliste zum Abhaken.

Rezepte & Kochmodus

Import aus Fotos, PDF, Links oder abfotografierten Kochbuchseiten. „Habe ich alles da?" gleicht mit dem Vorrat ab. Der Kochmodus zeigt einen Schritt pro Seite, Timer inklusive.

Küchen-Wiki

Garzeiten für Pfanne, Ofen, Airfryer, Kontaktgrill und Co., gefiltert nach den Geräten, die man wirklich hat. Dazu Kerntemperaturen, Umrechner und gespeicherte Küchentipps.

Offline-first

Alle Daten liegen in einer lokalen SQLite-Datenbank. Ins Netz geht die App nur für den KI-Aufruf, die Produktsuche per Barcode und, wenn eingerichtet, den Heimserver.

03Der Mini-Server: Abgleich per Tailscale

Der spannendste Teil für mich als Systemintegratorin: Mehrere Handys, ein Haushalt. Wenn ich im Laden etwas abhake, soll das auf dem anderen Handy auch weg sein. Klassisch würde man dafür eine Cloud nehmen. Wollte ich nicht.

Stattdessen läuft ein kleiner Python-Server (FastAPI, eine SQLite-Datei, ein Zugangsschlüssel) auf dem PC zu Hause. Der ist über ein Windows-Installer-Skript in fünf Minuten eingerichtet: Python, virtuelle Umgebung, Firewall-Regel, geplante Aufgabe beim Systemstart. Genauso gut tut es ein Raspberry Pi oder ein NAS per Docker. Bei mir läuft der Server im Moment nur in Teilzeit auf dem Notebook, bis ich alles am Hauptserver eingerichtet habe.

Lösung: Tailscale statt Portfreigabe

Damit die Handys den PC auch unterwegs erreichen, läuft alles über Tailscale. Jedes Gerät bekommt eine feste Adresse im privaten Netz, die App spricht den PC einfach über seinen Tailscale-Namen an, etwa http://buero-pc:8000. Keine Freigabe in der FRITZ!Box, kein DynDNS, kein offener Port im Internet. Nur im Heimnetz reicht auch die normale LAN-Adresse.

Wie der Abgleich arbeitet

Die App bleibt offline-first: Jedes Handy behält alle Daten, der Server ist nur der Vermittler. Änderungen werden per push hochgeladen und per pull geholt, Bilder von Rezepten und Tipps wandern als Dateien mit. Ist der Server aus, warten die Änderungen einfach auf dem Handy. Bei Konflikten gewinnt die neuere Änderung, die anderen Geräte bekommen einen Hinweis. Ein Hintergrund-Abgleich sorgt dafür, dass neue Einträge auch dann ankommen, wenn die App gerade nicht offen ist.

Gelernt dabei

Datenbank-Migrationen sind kein Spaß, wenn zwei Geräte unterschiedliche App-Versionen haben. Deshalb ist jedes Schema versioniert, und Tests prüfen jede Migration gegen alle alten Stände. Klingt übertrieben für eine Küchen-App, erspart mir aber die Sorge, dass ein Update den Vorrat wegwischt.

04Extra: der Rezept-Einleser

Rezepte aus dem Netz landen bei mir meist als gespeicherte HTML-Seite auf dem Handy, per SingleFile, weil viele Rezeptseiten automatische Abrufe blocken. Solche Dateien sind riesig: Die Bilder stecken als Base64-Blöcke mit drin, dazu jede Menge Skript- und Werbe-Ballast. Die App kann das zwar selbst: Sie nutzt Gemini per API für den Resteverwerter und hat bis vor Kurzem auch Fotos und Bilder von Rezepten damit umgewandelt. Solche Dateien direkt in der App durch die KI zu jagen ist aber echt mühsam und frisst vor allem Token, die ich lieber für den Resteverwerter aufhebe. Und es wartet noch eine ganze Menge Rezepte mit Bildern darauf, eingepflegt zu werden.

Also habe ich mir einen eigenen Einleser gebastelt: eine kleine Web-App (React, dazu ein Python- oder Node-Backend, wahlweise als Desktop-Fenster) für den PC. Sie nimmt HTML-Dateien und Data-URIs, normale Links, Fotos und Screenshots (auch Handschrift) und Text entgegen. Vorher wird aufgeräumt: HTML entpacken, Skripte und Werbung raus, nur den kulinarischen Text und das Hauptbild behalten. Erst dann liest eine lokale KI über Ollama das Rezept aus und schreibt es genau in das JSON-Format, das die Küchenapp versteht. Wer keinen Heimserver hat, kann stattdessen Gemini eintragen. Die Bild-Umwandlung ist damit aus der App in den Einleser gewandert.

Warum sich das lohnt

Die App auf dem Handy bekommt am Ende nur noch eine saubere JSON-Datei, gern auch eine ganze Sammlung {"recipes": [...]} auf einmal, und übernimmt sie ohne KI-Aufruf. Token sparen, weniger Fehler beim Einlesen, und die schwere Arbeit macht der PC. Als kleine Dreingabe hat der Einleser ein eigenes Kochbuch mit Kochmodus bekommen, damit man die Rezepte auch am Rechner nachschlagen kann.

Der Einleser ist wie die App selbst vorerst privat, der Code nicht öffentlich.

05Screenshots

Drei Eindrücke aus der App: die Speisekammer als Hauptseite, der Rechner und die Einstellungen. Mehr zeige ich vorerst nicht, das Projekt bleibt privat. (Antippen zum Vergrößern.)

06Stand & Ausblick

Die App ist bei uns täglich im Einsatz, der Server läuft unauffällig auf dem PC mit. Es kommt laufend Kleines dazu, meist genau das, was uns beim Kochen gerade gefehlt hat. Vorerst bleibt das Projekt privat, der Code ist nicht öffentlich. Sollte sich das ändern, steht es hier.

Hinweis: Privates Heimprojekt. Produktdaten beim Barcode-Scan kommen von Open Food Facts, der KI-Resteverwerter braucht wahlweise einen eigenen Gemini-Schlüssel oder ein Ollama im Heimnetz. Alles andere läuft komplett offline.
← Zurück zu den Projekten
↑