Il mio ecosistema di app personali: un'app sola, nel browser e su Windows e Android, in cui ogni app è una sezione, oggi Spese e Inventario. I dati stanno sul dispositivo e funzionano senza rete; il mio server li sincronizza, anche nelle aree condivise con altre persone e con la cifratura end-to-end. Si prova senza account, con dati d'esempio.
Oriel è il mio ecosistema di app personali: un'app sola, nel browser e come app per Windows e Android, in cui ogni app è una sezione con i suoi dati, sopra un database, una sincronizzazione e una libreria di componenti in comune. La prima sezione è **Spese**, l'erede di Spiccio, riscritta qui un pezzo alla volta; la seconda, **Inventario**, tiene gli oggetti di casa con garanzie e scontrini. Dal link la si prova senza account: «Prova con dati d'esempio» apre Spese con conti e movimenti inventati, che restano in quel browser.
**Che cosa fa**
- **Funziona senza rete**: i dati stanno sul dispositivo, in SQLite (nel browser in WebAssembly, con OPFS), e il server li porta sugli altri dispositivi; in un aggiornamento viaggiano solo i campi cambiati. - **Spese**: conti, movimenti, resi, abbonamenti con disdetta e preavviso, budget del mese, previsione del saldo, import da CSV e una Revisione che trova doppioni e conflitti. - **Inventario**: un oggetto nasce da una spesa, con lo scontrino allegato e la garanzia che scade. - **Aree condivise**: dati in comune con altre persone, invitate con un link, con chi c'è in quel momento, il movimento bloccato mentre un altro lo modifica e i cambiamenti in tempo reale. - **Cifratura end-to-end**, facoltativa: sul server solo dati cifrati, e togliere una persona da un'area ne cambia la chiave. - **Accesso** con password, passkey e codice temporaneo; un salvataggio si annulla.
**La parte difficile**
Due dispositivi che cambiano lo stesso movimento senza rete: il server non sovrascrive mai, tiene le due versioni e la scheda del conflitto mostra che cosa è cambiato, dove e chi l'ha fatto, finché qualcuno sceglie. Le regole che legano più record, come i resi che non superano la spesa, le controlla anche il server, e il conflitto dice quale regola l'ha fermato.
Vue 3 e TypeScript, Fastify e PostgreSQL sul mio server in Docker, Tauri 2 per le app native: 22 pacchetti in un monorepo, ogni modulo documentato in un catalogo, più di 5.000 prove automatiche e un centinaio di prove end-to-end in un browser vero.
Progettazione, sviluppo full-stack e pubblicazione · 2026
Vue.js, Fastify, PostgreSQL, SQLite, Tauri