Echtzeit ohne Reibung
Zwei Leute stehen gleichzeitig im Laden. Was der eine abhakt, muss beim anderen sofort verschwinden — auch wenn im Supermarkt kaum Netz ist.
Apps und Websites, individuell gebaut. Vom ersten Satz bis zur Übergabe dieselbe Person.
Eine App für Familien und WGs: geteilte Einkaufsliste in Echtzeit, Aufgaben, Rezepte, Budget und KI. Konzipiert, gebaut und betrieben von mir allein — vom leeren Xcode-Projekt bis zum laufenden Backend.





Echte Bildschirmabzüge aus der laufenden App.
Haushaltsorganisation ist über Zettel, Chat-Nachrichten und drei verschiedene Apps verteilt. Wer was gekauft hat, was noch fehlt und was der Monat gekostet hat, weiß am Ende niemand genau.
Das Problem, in drei Punkten
Zwei Leute stehen gleichzeitig im Laden. Was der eine abhakt, muss beim anderen sofort verschwinden — auch wenn im Supermarkt kaum Netz ist.
Jede Haushalts-App scheitert am selben Punkt: Daten pflegen ist Arbeit. Wer Preise abtippen muss, hört nach zwei Wochen auf.
Einkäufe, Budgets und Gesundheitsdaten einer ganzen Familie liegen in einer App. Das verlangt ein Rechtemodell, das nicht auf der Client-Seite endet.
Mehrere Listen pro Haushalt, Live-Sync über alle Geräte, automatische Kategorisierung und Bündelung von Dubletten. Ohne Netz läuft alles weiter und synchronisiert später nach.

Schreibvorgänge landen in einer lokalen Warteschlange und werden nachgezogen, sobald wieder Netz da ist. Im Funkloch bleibt die App vollständig bedienbar.
Kassenbon fotografieren — die App trägt Preise ein, ergänzt fehlende Artikel und erkennt Pfand und Rabatte. Dazu Rezept-Generator und Foto-zu-Kalorien über Google Gemini.

Katalog mit Filtern, Zutaten mit einem Tap auf die Einkaufsliste, skalierte Mengen und ein Schritt-für-Schritt-Kochmodus.

Monatsbudget, Ausgaben nach Kategorie, Trip-Historie und Beiträge einzelner Mitglieder — damit am Monatsende nichts im Ungefähren bleibt.

Premium läuft über StoreKit 2 und wird ausschließlich auf dem Server verifiziert. Ein manipulierter Client schaltet keine bezahlten Funktionen frei.
Bewusst schlank gehalten: ein Framework pro Aufgabe, keine Abhängigkeit ohne Grund. Genau so gehe ich auch Kundenprojekte an.
Alles, was ohne Netz funktionieren muss. Die Liste liegt lokal in SwiftData, Schreibvorgänge gehen in eine Warteschlange und werden nachgezogen, sobald wieder Verbindung da ist. Auch der Kauf läuft hier — geprüft wird er aber nicht hier.
Hier entscheidet sich, wer was darf. Firestore-Rules und Cloud Functions prüfen Rechte, Abo-Status und Punktestände; für die App sind diese Felder schreibgeschützt. Sie kann sie anzeigen, aber nicht setzen.
Der einzige fremde Dienst. Erreichbar nur über eigene Cloud Functions mit Anmeldung, Tageslimit pro Nutzer und Größenbegrenzung für Bilder. Der API-Schlüssel liegt nie in der App.
Das sind die Stellen, an denen sich zeigt, ob eine App den Alltag übersteht — und die Art von Arbeit, die ich auch in Ihr Projekt stecke.
Schreibvorgänge landen in einer lokalen Warteschlange und werden nachgezogen, sobald wieder Netz da ist. Im Supermarkt-Funkloch bleibt die App vollständig bedienbar — statt eines Ladekreisels vor dem Kühlregal.
Wer was lesen und schreiben darf, steht in Firestore-Rules und Cloud Functions, nicht in der App. Abo-Status und Punktestände sind für den Client schreibgeschützt — die Oberfläche kann sie anzeigen, aber nicht setzen.
Alle KI-Aufrufe laufen über eigene Cloud Functions mit Authentifizierung, Tageslimit pro Nutzer und Größenbegrenzung für Bilder. Der API-Schlüssel liegt nie in der App, und ein einzelner Account kann keine unbegrenzten Kosten auslösen.
