Gestore Spese

A web app to keep the household finances together: it imports statements from several banks, categorises spending and assigns it to people and accounts.

Why

At home we have several accounts and several people, and I did not want a commercial app reading our transactions. I built something that runs on my own server, with the data in my own database.

Dashboard with monthly income and expenses and spending by category (made-up data)
The dashboard with income and expenses by month and spending by category. The data is made up.

What it does

  • Reads the real formats of three banks (Trade Republic, BBVA, Intesa Sanpaolo) and drops duplicates even when two imports overlap.
  • Assigns categories with rules learned from corrections: rules on the text count for more than the merchant's category code, because some merchants declare a wrong one.
  • Recognises transfers between one's own accounts (same person, same amount, within 10 minutes, or 3 days if the time is missing) and leaves them out of spending.
  • Computes the investment fund from the file exported by the bank and checks the balances.
  • Produces an analysis with Claude Code running locally, with no API key, and saves it in a table.

Technical choices

Everything runs in Docker Compose with Supabase (Postgres, authentication, API and functions) and a Vue 3 front end, with nine SQL migrations. For the AI analysis a process on the server takes jobs from the database instead of exposing a port, and validates the data it receives. Access goes only through Cloudflare Access. It has backups, a phone interface and a dark theme.

What I did

I wrote it on my own in about forty commits between June and July 2026; the first version came together in a day and I refined it afterwards. Part of the work was done by Claude Code sessions. The images above show made-up data, not ours.

Limits

There are no significant automated tests. My family uses it, but it is a private project: the repository is not public and there is no demo.

  • Stack

    Vue 3 · TypeScript · Vite · Pinia · Tailwind · Chart.js · Supabase and Postgres · Deno · Docker · nginx

  • My role

    Personal project: design and development.