Nuxt 4
Spender
App de finanzas personales: gastos, ingresos, transferencias, cuentas y reportes. Web y app Android desde el mismo código, con uso offline y sync en segundo plano.
Qué resuelve
Quería registrar movimientos sin depender de la red. Las transacciones viven en IndexedDB y cada mutación queda marcada como pendiente; un worker sincroniza cada 60 s mandando lo pendiente con su syncedAt, y la API responde qué crear, actualizar o borrar en local. Los _id se generan en el cliente con BSON ObjectId, así que un registro hecho sin cobertura nace ya con su identidad definitiva. En Android suma desbloqueo por biometría y escaneo de boletas con OCR: la foto no se guarda ni se sube.
Stack
- Nuxt 4
- Capacitor 8
- Express
- MongoDB
- IndexedDB
- Fly.io
- Netlify
Infra
Monorepo npm workspaces. Nuxt 4 como SPA sin SSR en Netlify; API Express + TypeScript con MongoDB en Fly.io. Capacitor 8 envuelve ese mismo build para Android (minSdk 24, targetSdk 36) con el proyecto nativo versionado y APK de release firmado. El OCR viaja dentro del APK —unos 11 MB de tesseract.js— para que escanear funcione sin red. Play Store pendiente.