Skip to content
HA
← All projects

Nuxt 4

Spender

Personal finance app: expenses, income, transfers, accounts, and reports. Web and Android from one codebase, offline-capable with background sync.

What it solves

I wanted to log money without a network. Transactions live in IndexedDB and every mutation is flagged pending; a worker syncs every 60s, sending what is pending with its syncedAt, and the API answers what to create, update, or delete locally. Client-side BSON ObjectIds mean a record written with no signal is born with its final identity. Android adds biometric unlock and receipt scanning by OCR: the photo is never stored or uploaded.

Stack

  • Nuxt 4
  • Capacitor 8
  • Express
  • MongoDB
  • IndexedDB
  • Fly.io
  • Netlify

Infra

npm workspaces monorepo. Nuxt 4 as an SSR-less SPA on Netlify; Express + TypeScript API with MongoDB on Fly.io. Capacitor 8 wraps that same build for Android (minSdk 24, targetSdk 36), with the native project committed and a signed release APK. The OCR engine ships inside the APK —around 11 MB of tesseract.js— so scanning works with no network. Play Store still pending.