KassenKnoten

KassenKnoten

Zwei Einkommen, ein Haushalt, ein klarer Plan.

Der Haushaltsplaner für alle, die Kosten ungleich teilen — und wollen, dass die Rechnung stimmt. Miete nach Einkommen, Strom halbe-halbe, das Fitnessstudio zahlt nur einer. Jeder Posten bekommt seine eigene Regel, und beide sehen sofort, was er sie kostet.

Auf den Cent — kein Float berührt je einen Betrag Ein Container für amd64 und arm64 Keine Telemetrie, keine externen Aufrufe MIT-Lizenz
Die Übersicht: Einnahmen, Fixkosten, variable Kosten, Sparrate und freies Geld als Kennzahlen, darunter die Aufschlüsselung pro Person und die Kosten nach Kategorie.
Die Übersicht für den laufenden Monat — und für jeden anderen, denn jeder Eintrag weiß, ab wann er gilt.

Das Problem

Jedes Werkzeug bekommt das halb hin.

Aufteilungs-Apps kennen genau eine Regel für alles. Tabellen können es ausdrücken — bis eine Zelle verrutscht und die Formel monatelang still falsch rechnet. KassenKnoten macht die Aufteilung zur bewussten Entscheidung pro Posten, rechnet sie auf den Cent und zeigt beim Tippen, was dabei herauskommt.

Jede Ausgabe nach eigener Regel

Feste Quote oder nach Einkommen — pro Posten gewählt, nie angenommen. Die Standard-Aufteilung füllt nur das Formular vor.

Auf den Cent

Beträge sind ganze Cent, Anteile Basispunkte. 39,99 € halbe-halbe werden 20,00 € und 19,99 € — nie 39,98 €. Die Rechen-Engine ist ein reines, getestetes Modul.

Die Vergangenheit bleibt ehrlich

Jeder Eintrag trägt die Monate, für die er gilt. Eine Gehaltserhöhung im September lässt den August August bleiben — und die App fragt nach, ob eine Änderung neu gilt oder schon immer galt.

Variable Kosten, zwei Wege

Lebensmittel, Tanken, Ausgehen: entweder zählt der Plan — oder jede Rechnung mit Datum, und der Plan wird zum Budget, gegen das gemessen wird.

Jeder Rhythmus wird monatlich

Eine Versicherung für 132,00 € im Jahr steht als 11,00 € im Monat neben allem anderen. Niemand teilt mehr im Kopf durch zwölf.

Sparen mit Absicht

Spartöpfe mit monatlicher Rate, Stand und optionalem Ziel — einer Person zugeordnet oder dem Haushalt.

Ruhige Warnungen

Negatives freies Geld, eine Sparrate über den Einnahmen, ein überschrittenes Budget — als Hinweis, nicht als Modal. Löschen zeigt „Rückgängig“ statt „Bist du sicher?“.

Als App installierbar

Eigenes Symbol auf dem Home-Bildschirm, Start ohne Adressleiste. Browser, die das nicht können, bekommen den Weg durch ihr eigenes Menü genannt.

Englisch oder Deutsch

Die Sprache wählst du beim Einrichten und änderst sie jederzeit. Sie gehört dem Haushalt, nicht dem Browser — das Küchen-Tablet spricht dieselbe wie der Rechner.

Erweiterbar mit eigenem Code

Lade eine eigene Erweiterung hoch, und sie steuert Karten zur Übersicht bei. Sie läuft auf deinem Server mit vollem Zugriff — installiere nur, was du gelesen hast oder wem du vertraust.

Deine Daten bleiben deine

Eine SQLite-Datei auf einem Volume, das dir gehört. Versionierte JSON-Sicherungen und CSV-Export; die Wiederherstellung läuft in einer einzigen Transaktion.

Gemeinsame Fixkosten

Wer zahlt was — und warum.

Jeder gemeinsame Posten zeigt beide Anteile in Euro und Prozent, und welche Regel sie erzeugt hat. Die Aufteilung wird beim Tippen vorgerechnet, mit derselben Funktion, die später auch speichert — eine Vorschau, die anders rechnet als das Ergebnis, ist keine.

  • Feste Quote oder nach Einkommen, pro Posten entschieden
  • Größte-Reste-Verfahren: die Anteile ergeben immer die Summe
  • Privat und gemeinsam sauber getrennt
Gemeinsame Fixkosten: jede Zeile zeigt beide Anteile in Euro und Prozent sowie die verwendete Aufteilungsregel.

Variable Kosten

Plan oder Kassenbon.

Was nicht jeden Monat gleich ist, bekommt ein Budget — und du entscheidest pro Budget, wie es geführt wird. Plan zählt den geplanten Betrag und fragt nichts weiter. Detailliert zählt, was tatsächlich gebucht ist, jede Ausgabe mit Datum.

  • Der Modus steht als Badge auf der Karte, nicht in einem Dialog
  • Gebucht gegen geplant, immer nebeneinander
  • Wird wie Fixkosten zwischen euch aufgeteilt
Variable Kosten: ein gemeinsames Budget im Detail-Modus mit Fortschrittsbalken, den Anteilen beider Personen und den einzelnen Ausgaben mit Datum.

Rücklagen

Sparen, das man sieht.

Spartöpfe mit Rate, Stand und optionalem Ziel. Der Fortschritt ist ein Balken, kein Kopfrechnen — und wenn ein Topf sein Ziel überschreitet, sagt die Übersicht es freundlich.

Spartöpfe mit monatlicher Rate, aktuellem Stand, Ziel und Fortschrittsbalken.

Am Handy

Für 375 px entworfen, nicht dafür geschrumpft.

Der Haushaltsplan wird in der Küche geöffnet, nicht am Schreibtisch. Gleiche Funktionen, Navigation in Daumenreichweite, ein Zahlenfeld, das den Ziffernblock aufruft, und ein Design, das dem Systemthema folgt.

  • Helles und dunkles Thema, systemabhängig
  • Installierbar als App, mit eigenem Symbol
  • Ohne Verbindung sagt die App, dass sie offline ist — statt alte Zahlen zu zeigen
Die Übersicht auf einem Telefon im dunklen Thema. Der Anmeldebildschirm mit Haushalts-Passwort und dem Feld für den Bestätigungscode.

Sicherheit

Es sind eure Zahlen. Sie werden auch so behandelt.

Passwort und zweiter Faktor

Ein Haushalts-Passwort, mit argon2id gehasht und aus der Umgebung gelesen — eine Kopie der Datenbank ist keine Kopie des Passworts. Optional dazu ein Code aus jeder Authenticator-App (TOTP nach RFC 6238). Ein benutzter Code wird abgelehnt.

Verschlüsselte Sitzung

Das Sitzungs-Cookie ist verschlüsselt, nicht bloß signiert (JWE, A256GCM), httpOnly, SameSite=Lax und Secure über HTTPS.

Alles zu, außer was offen sein muss

Jede Route außer Anmeldung und Health-Check verlangt eine Sitzung — deny by default, damit eine neue Seite nicht versehentlich öffentlich ist. Server Actions prüfen zusätzlich selbst.

Nichts von außen

Content-Security-Policy mit Nonce pro Anfrage, Schriften selbst gehostet, keine CDNs, keine Telemetrie. Der Container läuft als unprivilegierter Benutzer.

Selbst hosten

Docker und zwei Minuten.

Kein Quellcode, kein Node, kein Build: das Image ist für amd64 und arm64 veröffentlicht, ein Raspberry Pi also genauso ein Ziel wie ein NUC. Zwei Dateien herunterladen, zwei Geheimnisse erzeugen — die Skripte dafür laufen im Image selbst — und starten. Die Datenbank wird beim ersten Start angelegt und migriert.

mkdir kassenknoten && cd kassenknoten
curl -LO https://github.com/jankln/KassenKnoten/releases/latest/download/docker-compose.yml
curl -L -o .env https://github.com/jankln/KassenKnoten/releases/latest/download/env.example

# ein Sitzungsschlüssel
echo "SESSION_SECRET=$(openssl rand -base64 32)" >> .env

# euer Haushalts-Passwort, gehasht
docker run -it --rm ghcr.io/jankln/kassenknoten:latest \
  node scripts/hash-password.ts

# optional: zweiter Faktor, druckt einen QR-Code ins Terminal
docker run -it --rm ghcr.io/jankln/kassenknoten:latest \
  node scripts/totp-secret.ts

docker compose up -d

Danach http://127.0.0.1:3000 öffnen — ein Assistent in drei Schritten richtet den Haushalt ein. Für den Zugriff von außen gehört ein Reverse Proxy mit TLS davor.