Oriel: meine persönlichen Apps in einer einzigen, die offline funktioniert und mit meinem Server synchronisiert

Mein Ökosystem persönlicher Apps: eine einzige App, im Browser und unter Windows und Android, in der jede App ein Bereich ist, heute Spese (Ausgaben) und Inventario (Inventar). Die Daten liegen auf dem Gerät und funktionieren offline; mein Server synchronisiert sie, auch in mit anderen geteilten Bereichen und mit Ende-zu-Ende-Verschlüsselung.

Oriel ist mein Ökosystem persönlicher Apps: eine einzige App, im Browser und als App für Windows und Android, in der jede App ein Bereich mit eigenen Daten ist, auf einer gemeinsamen Datenbank, Synchronisierung und Komponentenbibliothek. Der erste Bereich ist **Spese** (italienisch für „Ausgaben“), der Nachfolger von Spiccio, hier Stück für Stück neu geschrieben; der zweite, **Inventario** („Inventar“), verwaltet die Gegenstände im Haushalt mit Garantien und Kassenbons. Über den Link lässt sie sich ohne Konto ausprobieren: „Prova con dati d'esempio“ (mit Beispieldaten ausprobieren) öffnet Spese mit erfundenen Konten und Buchungen, die in diesem Browser bleiben.

**Was sie kann**

- **Funktioniert offline**: Die Daten liegen auf dem Gerät, in SQLite (im Browser per WebAssembly, mit OPFS), und der Server bringt sie auf die anderen Geräte; bei einer Änderung werden nur die geänderten Felder übertragen. - **Spese**: Konten, Buchungen, Erstattungen, Abos mit Kündigung und Kündigungsfrist, Monatsbudgets, Saldoprognose, CSV-Import und eine Prüfung, die Dubletten und Konflikte findet. - **Inventario**: Ein Gegenstand entsteht aus einer Ausgabe, mit angehängtem Kassenbon und der Garantie, die abläuft. - **Geteilte Bereiche**: gemeinsame Daten mit anderen Personen, per Link eingeladen, mit Anzeige, wer gerade da ist, einer Buchung, die gesperrt ist, während jemand anderes sie bearbeitet, und Änderungen in Echtzeit. - **Ende-zu-Ende-Verschlüsselung**, optional: Auf dem Server liegen nur verschlüsselte Daten, und wer aus einem Bereich entfernt wird, ändert dessen Schlüssel. - **Anmeldung** mit Passwort, Passkey und Einmalcode; ein Speichern lässt sich rückgängig machen.

**Der schwierige Teil**

Zwei Geräte ändern offline dieselbe Buchung: Der Server überschreibt nie, er behält beide Versionen, und die Konfliktkarte zeigt, was sich geändert hat, wo und wer es war, bis jemand wählt. Regeln, die mehrere Datensätze verbinden, etwa Erstattungen, die die Ausgabe nicht übersteigen dürfen, prüft auch der Server, und der Konflikt nennt die Regel, die ihn gestoppt hat.

Vue 3 und TypeScript, Fastify und PostgreSQL auf meinem eigenen Server in Docker, Tauri 2 für die nativen Apps: 22 Pakete in einem Monorepo, jedes Modul in einem Katalog dokumentiert, mehr als 5.000 automatische Tests und rund hundert End-to-End-Tests in einem echten Browser.

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

Vue.js, Fastify, PostgreSQL, SQLite, Tauri

Website ansehen

Andrea Coppetta