# MoneyKoi – Haushaltsbuch-App

> Ein Haushaltsbuch, das ohne Internet vollständig funktioniert, Kassabons am Handy liest und einen ganzen Haushalt in Echtzeit synchronisiert – als eigenes Produkt von der Idee bis zum Store.

Eigenes Produkt · seit 2024 · https://www.geraldgmainer.com/projects/moneykoi

## Ausgangslage

Nach über zehn Jahren eigener Finanzverwaltung wollte ich ein Haushaltsbuch ohne Bank-Login, ohne Cloud-KI und ohne Werbung, das auch im Flugmodus alles kann. Heute gibt es MoneyKoi als Free-, Pro- und Cloud-Plan: Ohne Konto liegt das ganze Buch am Handy, mit Cloud teilt sich ein Haushalt ein Buch über Handys, Tablets und Browser.

## Meine Rolle

- **Produkt** – Funktionsumfang, Pläne und Roadmap
- **Design** der App, der Web-App und der Website
- **Entwicklung** von Flutter-App, Next.js-Web-App, Supabase-Backend und Admin-Dashboard
- **Vermarktung** – Website mit Blog und SEO, Store-Auftritt und Releases

## Entscheidungen

- **Die lokale Datenbank ist die Quelle der Wahrheit:** Die App liest und schreibt nur in SQLite. Änderungen landen in einer persistenten Outbox, die sie einzeln, zusammengefasst und mit Wiederholungen an Supabase schickt. Änderungen anderer Geräte kommen über einen einzigen Delta-Sync zurück; Realtime-Events lösen nur einen Abgleich aus, die Daten selbst kommen immer über denselben Weg.
- **Ein Haushaltsbuch ist ein Mandant:** Vor jeder Anfrage prüft ein PostgREST-Hook, ob der Nutzer Mitglied des Buchs ist. Die Row-Level-Security ist bewusst asymmetrisch: Lesen nur im aktiven Buch, Schreiben gegen das Buch der jeweiligen Zeile. So gehen offline gesammelte Buchungen auch dann durch, wenn inzwischen ein anderes Buch offen ist.
- **Der Beleg-Scanner bleibt am Gerät:** ML Kit erkennt Text und QR-Codes am Handy, eigene Parser für SPAR, BILLA, Lidl und Co. lesen die Positionen aus, und ein Abgleich prüft, ob sie die Summe ergeben. Alles regelbasiert, ohne LLM – das Foto und sein Text gehen an keinen KI-Dienst.
- **Kein Float für Geld:** Beträge sind am Server NUMERIC und in Dart ein Decimal-Wertobjekt, Kontostände pflegen Trigger inkrementell. Prognose, Wiederholungsregeln und Kreditrechnung gibt es in Dart und TypeScript – gemeinsame Test-Fixtures sorgen dafür, dass App und Web exakt dieselben Zahlen liefern.

## Eckdaten

- Zeilen Dart in 40 Feature-Modulen: ~210k
- Tests in der App: ~10k
- Server-Migrationen: 100+
- Sprachen: Deutsch, Englisch, Japanisch: 3

## Technik

Flutter, Supabase, PostgreSQL, Next.js, Nuxt, ML Kit, Offline-First

## Links

- https://www.moneykoi.com
- https://play.google.com/store/apps/details?id=com.psyren.moneykoi
