Spiccio: gastos y cuentas desde el móvil y el PC, también sin conexión, sincronizados en mi servidor

Una app para gastos, ingresos y cuentas: un gasto se apunta desde el móvil en pocos segundos, incluso sin conexión, y se encuentra luego en el PC. Funciona en Android, Windows y en el navegador con el mismo código, se sincroniza con mi servidor y mantiene los importes exactos al céntimo. Suscripciones, presupuestos, importación CSV y cifrado de extremo a extremo opcional.

Spiccio es la app con la que llevo mis cuentas: gastos, ingresos, transferencias entre cuentas, suscripciones y presupuestos. La construí para mí y la uso de verdad; desde el enlace se prueba en el navegador sin cuenta, y los datos se quedan en ese navegador. La interfaz muestra todavía el nombre provisional, «Spese App» («app de gastos» en italiano).

**Qué hace**

- **Registro rápido**: el importe se teclea desde la derecha, como en la caja; cuenta y categoría son botones, y la categoría viene de una regla o del historial, indicando de dónde. - **Suscripciones y pagos recurrentes**: el calendario de vencimientos por confirmar, cuánto cuestan este mes y en los próximos doce, la prueba gratuita y el preaviso de baja. - **Presupuestos por categoría**, con el gasto neto y lo que queda del mes, también en el resumen. - **Importación CSV** con una vista previa que no escribe nada, las filas descartadas con su motivo y los posibles duplicados por decidir; volver a importar el mismo archivo no lo duplica. - **Revisión**, el único sitio donde se decide: duplicados, conflictos, vencimientos por confirmar, reglas propuestas. - **Previsión del saldo** a final de mes, con las partidas que la forman. - Exportación CSV, Excel y JSON, copia de seguridad cifrada, tema claro y oscuro.

**Un código, tres plataformas**

El dominio es TypeScript puro y no conoce ni SQL ni la interfaz: los casos de uso producen un plan de escritura que la persistencia convierte en transacciones. En Windows y Android la app es Tauri con SQLite nativo; en el navegador el mismo SQLite funciona en WebAssembly, sobre OPFS. En las apps se entra con una passkey, y la frase de cifrado puede quedar guardada tras la huella en el móvil o tras Windows Hello en el PC.

**La parte difícil: la sincronización**

Cada escritura guarda el dato y la operación por enviar en la misma transacción: si la app se cierra a mitad, no se pierde nada y nada sale dos veces. El servidor, Fastify con MongoDB, mantiene un registro ordenado para cada propietario; el dispositivo avanza su cursor solo después de aplicar una página, y el canal en tiempo real solo avisa. Un conflicto en los importes nunca se resuelve solo: llega a Revisión con el valor que ganó. Los importes son enteros en céntimos de principio a fin, nunca en coma flotante, y los saldos no se guardan: se recalculan a partir de los movimientos. Con el cifrado de extremo a extremo cada valor llega al servidor cifrado con AES-256-GCM, y el servidor no lee importes, comercios ni notas.

Las decisiones técnicas están escritas en 34 documentos; 2615 pruebas automáticas cubren dominio, persistencia, cliente y servidor, y en cada push una GitHub Action las ejecuta y publica el servidor y el cliente web.

Diseño, desarrollo full-stack y publicación · 2026

Vue.js, Tauri, Fastify, MongoDB, SQLite

Ver el sitio

Andrea Coppetta