ManiFinance
Meine eigene Finanz-App. Sie holt Buchungen per Open Banking direkt von meinen zwei Banken und zeigt Budget, Ersparnisse, Abos und Investments. Das Video wurde mit Demodaten aufgenommen.
Kurz gesagt
Warum ich sie gebaut habe
Fertige Budget-Apps zeigen einen Überblick, aber man kann den Zahlen keine eigenen Fragen stellen und nicht die Logik ändern, die entscheidet, was eine Buchung ist. Ich wollte die Rohdaten in meiner eigenen Datenbank, eine Kategorisierung, die ich selbst anpassen kann, und eine Möglichkeit, die Zahlen zu befragen.
Was sie kann
Jeden Morgen synchronisiert ein Job die Konten, holt Wechsel- und Aktienkurse und behält im Blick, wann die Einwilligung der Bank zum Datenzugriff erneuert werden muss.
Wechselkurse zuerst von der EZB, damit Euro-Buchungen sofort den Tageskurs bekommen
Aktienkurse für alle Papiere im Bestand und auf der Watchlist
Sync aller Konten neue Buchungen von beiden Banken, ohne Dubletten
Einwilligungs-Hinweis eine Nachricht, bevor die MitID-Einwilligung für die Bank abläuft
Warnungen doppelte Abbuchungen, ungewöhnlich hohe Beträge und Gebühren
Monatsabschluss wenn eine Gehaltsperiode endet, wird sie einmal abgeschlossen
Wochen-Mail nur sonntags: die Zahlen der Woche in fünf Zeilen
Es gibt ein Budget, Sparziele, die mit Konten und einem erwarteten Datum verknüpft sind, eine Renditekurve für Investments und eine Zahl dafür, was verfügbar ist, wenn feste Ausgaben und vereinbartes Sparen abgezogen sind. Mögliche doppelte Abbuchungen und ungewöhnlich hohe Ausgaben kommen als Push-Nachricht aufs Handy, und jede Gehaltsperiode wird abgeschlossen, wenn sie endet.
Kategorisierung
Die Kategorisierung folgt festen Regeln in einer bestimmten Reihenfolge:
- 1Manuelle Korrekturgewinnt immer, wenn ich eine Buchung selbst korrigiert habe
- 2Eigene Regelngreifen als Nächstes, wenn es keine manuelle Korrektur gibt
- 3Automatische Mustersind der letzte Ausweg
Überweisungen zwischen meinen eigenen Konten werden erkannt, damit sie nicht doppelt als Ausgaben zählen. Belege lassen sich als Foto hinzufügen.
- Die Bank schreibt
MCD 03942 LIME*KRSEL 33GO - Kartenkauf und Terminalnummer werden entfernt:
MCD 03942 - Kleinbuchstaben, Zeichen werden zu Leerzeichen:
lime krsel 33go - Unter bekannten Geschäften erkannt
- Die App zeigtLime
Fragen Sie Ihre Zahlen
Die Zahlen lassen sich in einem Chat in der App und über einen MCP-Server befragen, sodass ein KI-Assistent anhand der echten Buchungen antwortet, statt zu raten.
Habe ich zwei Buchungen vom selben Ort am selben Tag?
Ruft soeg_posteringer auf · fertig
Ja, einmal: zwei Lime-Fahrten am selben Tag. Die Banktexte sind verschieden, es sind also zwei echte Fahrten und nicht dieselbe Buchung doppelt.
Die Antwort beruht auf den Buchungen, die das Werkzeug gefunden hat.Chat und MCP-Server teilen sich dieselben 12 Werkzeuge:
maanedsoversigtMonatsübersichthistorikMonatsverlaufsoeg_posteringerBuchungen suchensaldiSaldentil_raadighedVerfügbarbudgetstatusBudgetstatusabonnementerAbosopsparingsmaalSparzielepersonerPersoneninvesteringerInvestmentskategorierKategoriensaet_kategoriKategorie setzen
Die Technik
Next.js und React mit einer SQLite-Datenbank bei Turso und Drizzle, damit Datenbankstruktur und Code im Gleichschritt bleiben. Die Bankverbindung läuft über Enable Banking, einen zugelassenen Anbieter für Open-Banking-Zugang. Das Layout baut auf Jakob Fiskers Komponentenbibliothek »Fisker Finance« auf.
- Die Bankzwei Banken, eigene Konten
- Enable BankingOpen Banking mit MitID-Einwilligung
- TursoSQLite + Drizzle
- Die AppNext.js + React, Chat und MCP
Mit den echten Zahlen geprüft
Die Berechnungen hinter Budget und Ausgaben gab es in zwei Fassungen, eine im Code und eine in der Datenbank. Als sie zu einer zusammengelegt wurden, lief das Ergebnis gegen die ganze Datenbank, bevor die Änderung live ging. Alle Zahlen auf der Analyse- und der Budgetseite stimmten, bis auf fünf Buchungen über null Kronen, die aus einer Zählung fielen.
Eine Prüfung der Geschwindigkeit hat die Zahl der Datenbankabfragen gesenkt:
Datenbankabfragen auf der Startseite
46→31
Datenbankabfragen auf der Analyseseite
61→29
Die wichtigste Lehre: Eine Kategorisierung anhand des Freitexts der Banken muss laufend mit echten Daten geprüft werden. Mehrere Fehler zeigten sich erst, als die Zahlen systematisch durchgesehen wurden.
Sollen wir reden?
Ich antworte innerhalb von 1–2 Werktagen. Ich bin es, der antwortet, und ich baue die Seite.