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.

September 2026Next.jsTursoOpen BankingMCP
ManiFinanceDemodaten

Kurz gesagt

2Banken per Open Banking
7Schritte im Job jeden Morgen
12Werkzeuge, geteilt von Chat und MCP-Server
46 → 31Datenbankabfragen auf der Startseite

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.

Der Morgen-Job7 Schritte · feste Reihenfolge
  1. Wechselkurse zuerst von der EZB, damit Euro-Buchungen sofort den Tageskurs bekommen

  2. Aktienkurse für alle Papiere im Bestand und auf der Watchlist

  3. Sync aller Konten neue Buchungen von beiden Banken, ohne Dubletten

  4. Einwilligungs-Hinweis eine Nachricht, bevor die MitID-Einwilligung für die Bank abläuft

  5. Warnungen doppelte Abbuchungen, ungewöhnlich hohe Beträge und Gebühren

  6. Monatsabschluss wenn eine Gehaltsperiode endet, wird sie einmal abgeschlossen

  7. Wochen-Mail nur sonntags: die Zahlen der Woche in fünf Zeilen

Schlägt ein Schritt fehl, laufen die anderen trotzdem. Nachrichten kommen als Push-Nachricht, sonst per E-Mail.

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:

  1. 1
    Manuelle Korrekturgewinnt immer, wenn ich eine Buchung selbst korrigiert habe
  2. 2
    Eigene Regelngreifen als Nächstes, wenn es keine manuelle Korrektur gibt
  3. 3
    Automatische 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.

Der Rohtext der Bank wird zu einem echten Namender Rohtext bleibt in den Details sichtbar
  1. Die Bank schreibtMCD 03942 LIME*KRSEL 33GO
  2. Kartenkauf und Terminalnummer werden entfernt: MCD 03942
  3. Kleinbuchstaben, Zeichen werden zu Leerzeichen: lime krsel 33go
  4. Unter bekannten Geschäften erkannt
  5. 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.

Chat in der AppBeispiel

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übersicht
  • historikMonatsverlauf
  • soeg_posteringerBuchungen suchen
  • saldiSalden
  • til_raadighedVerfügbar
  • budgetstatusBudgetstatus
  • abonnementerAbos
  • opsparingsmaalSparziele
  • personerPersonen
  • investeringerInvestments
  • kategorierKategorien
  • saet_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.

Der Weg einer Buchung4 Glieder
  1. Die Bankzwei Banken, eigene Konten
  2. Enable BankingOpen Banking mit MitID-Einwilligung
  3. TursoSQLite + Drizzle
  4. 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

Vorher
Jetzt

Datenbankabfragen auf der Analyseseite

61→29

Vorher
Jetzt

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.