preloader

Finance Tool

Einnahmen und Ausgaben über Jahre hinweg planen

  • FastAPI
  • Python
  • SQLite
  • Jinja2
  • Docker
Finance Tool

Selbstgehostetes Werkzeug, um Einnahmen und Ausgaben über mehrere Jahre zu planen und nachzuhalten. Der Anlass war die Frage, wie der Kontostand in zwei Jahren aussieht, wenn Miete, Gehalt und Versicherungen so weiterlaufen – und was passiert, wenn sich eine davon ändert.

Der Kern: Regeln statt Zeilen

Ein wiederkehrender Posten wird nicht als Stapel einzelner Buchungen gespeichert, sondern als Regel: „Miete, 1.180 €, monatlich, ab 01.01.2026, unbefristet". Die konkreten Termine berechnet die Anwendung bei jeder Abfrage neu und legt die Abweichungen darüber.

Daraus folgt das Angenehme: Folgejahre sind einfach da. 2031 zeigt dieselben Posten wie 2026, bis dort etwas abweicht. Kein Kopieren, keine Duplikate, kein Jahreswechsel-Ritual.

Ändert man etwas, fragt das Werkzeug, wie weit es gelten soll – nur dieser Termin, dieser und alle folgenden, oder die ganze Serie. „Dieser und alle folgenden" teilt die Serie: Die alte endet am Vortag, eine neue beginnt am Termin.

Drei Dinge, die den Unterschied machen

Eine geteilte Serie bleibt eine Zeile. Jede Serie trägt eine group_id, die beim Teilen vererbt wird, und die Jahresmatrix gruppiert danach. Eine jährliche Gehaltserhöhung bleibt deshalb über beliebig viele Jahre eine einzige Zeile, statt jedes Jahr eine neue zu erzeugen.

Termine werden immer vom Startdatum aus gerechnet, nie Schritt für Schritt fortgeschrieben. Eine monatliche Serie ab dem 31.01. liefert darum 28.02., 31.03., 30.04. – das Kürzen auf kurze Monate summiert sich nicht auf und frisst sich nicht über Jahre nach vorne.

Vor dem Startsaldo wird bewusst nichts gerechnet. Der Anker eines Kontos liegt auf einem frei wählbaren Monatsanfang, nicht auf dem Jahresanfang – so lässt sich der heutige Kontostand der Bank übernehmen, ohne alle Buchungen bis Januar nachzupflegen. Monate davor zeigen „–" statt eines erfundenen Saldos.

Technik

FastAPI mit Jinja2-Templates auf SQLite, Frontend ohne Build-Schritt. Kontoauszüge lassen sich als PDF importieren (pdfplumber); gemerkte Zuordnungen „Text im Auszug → Posten" erkennen beim nächsten Mal von selbst, wohin eine Buchung gehört. Konten sind getrennte Buchführungen in derselben Datenbank, lassen sich für den Gesamtblick aber kombinieren.

← Alle Projekte