Spiccio: Ausgaben und Konten auf Handy und PC, auch offline, synchronisiert über meinen Server

Eine App für Ausgaben, Einnahmen und Konten: Eine Ausgabe ist auf dem Handy in wenigen Sekunden erfasst, auch ohne Netz, und findet sich danach auf dem PC wieder. Sie läuft auf Android, Windows und im Browser mit demselben Code, synchronisiert sich mit meinem Server und hält Beträge centgenau. Abos, Budgets, CSV-Import und optionale Ende-zu-Ende-Verschlüsselung.

Spiccio ist die App, mit der ich meine eigenen Finanzen führe: Ausgaben, Einnahmen, Umbuchungen zwischen Konten, Abos und Budgets. Ich habe sie für mich gebaut und nutze sie wirklich; über den Link lässt sie sich ohne Konto im Browser ausprobieren, und die Daten bleiben in diesem Browser. Die Oberfläche zeigt noch den Arbeitstitel „Spese App“ (italienisch für „Ausgaben-App“).

**Was sie kann**

- **Schnellerfassung**: Der Betrag wird von rechts getippt, wie an der Kasse; Konto und Kategorie sind Schaltflächen, und die Kategorie kommt aus einer Regel oder aus dem Verlauf – mit Angabe, woher. - **Abos und wiederkehrende Posten**: der Kalender der zu bestätigenden Termine, was sie diesen Monat und in den nächsten zwölf kosten, Probezeit und Kündigungsfrist. - **Budgets pro Kategorie**, mit den Nettoausgaben und dem Rest des Monats, auch in der Übersicht. - **CSV-Import** mit einer Vorschau, die nichts schreibt, abgelehnten Zeilen samt Grund und möglichen Dubletten zur Entscheidung; dieselbe Datei erneut importiert verdoppelt nichts. - **Prüfen**, der einzige Ort, an dem entschieden wird: Dubletten, Konflikte, zu bestätigende Termine, vorgeschlagene Regeln. - **Saldoprognose** zum Monatsende, mit den Posten dahinter. - Export als CSV, Excel und JSON, verschlüsseltes Backup, helles und dunkles Design.

**Ein Code, drei Plattformen**

Die Domäne ist reines TypeScript und kennt weder SQL noch Oberfläche: Die Anwendungsfälle erzeugen einen Schreibplan, den die Persistenzschicht in Transaktionen übersetzt. Unter Windows und Android ist die App Tauri mit nativem SQLite; im Browser läuft dasselbe SQLite in WebAssembly, auf OPFS. In den Apps meldet man sich mit einem Passkey an, und die Verschlüsselungsphrase kann hinter dem Fingerabdruck auf dem Handy oder hinter Windows Hello auf dem PC liegen.

**Der schwierige Teil: die Synchronisierung**

Jeder Schreibvorgang speichert die Daten und die zu sendende Operation in derselben Transaktion: Schließt sich die App mittendrin, geht nichts verloren und nichts wird doppelt gesendet. Der Server, Fastify mit MongoDB, führt für jeden Eigentümer ein geordnetes Log; ein Gerät rückt seinen Cursor erst vor, wenn es eine Seite angewendet hat, und der Echtzeitkanal meldet nur, dass sich etwas geändert hat. Ein Konflikt bei Beträgen löst sich nie von selbst: Er landet in „Prüfen“, mit dem Wert, der sich durchgesetzt hat. Beträge sind von Anfang bis Ende ganze Zahlen in Cent, nie Gleitkommazahlen, und Salden werden nicht gespeichert, sondern aus den Buchungen neu berechnet. Mit Ende-zu-Ende-Verschlüsselung erreicht jeder Wert den Server mit AES-256-GCM verschlüsselt, und der Server kann weder Beträge noch Händler noch Notizen lesen.

Die technischen Entscheidungen sind in 34 Dokumenten festgehalten; 2.615 automatische Tests decken Domäne, Persistenz, Client und Server ab, und bei jedem Push führt eine GitHub Action sie aus und veröffentlicht Server und Web-Client.

Konzeption, Full-Stack-Entwicklung und Veröffentlichung · 2026

Vue.js, Tauri, Fastify, MongoDB, SQLite

Website ansehen

Andrea Coppetta