BudgetMaster
Money app for your phone: quick add, budgets that start on payday, reports and spaces shared with a partner.
Live demoSource code
Runs on my home server, so it may be offline now and then (for example during a power or internet outage).

About the project
A personal finance app I started in 2024 on Next.js and MongoDB. Later I rebuilt it from scratch on TanStack Start and PostgreSQL, and it now runs as a live demo on my home server.
It answers three questions: where did my money go, how much can I still spend this month, and what is coming up. A couple can keep a shared household space while personal money stays personal. The demo gives every visitor a private copy of 14 months of sample data.
What you can try
- Quick add in a few seconds, or a typed line like "coffee 3.20 cash yesterday"; known payees fill in their category
- Budgets per category with a month that can start on payday, rollover and a spending pace chart
- Recurring payments, savings goals, split receipts and a 90-day balance forecast
- Shared spaces with roles, who paid what and settle up, changes pushed live to other devices
- Bank statement import from CSV with a review step, duplicate detection and undo
- Reports: cash flow, net worth, spending calendar, monthly report and a year in review
- Wallets in their own currencies; totals, budgets and reports convert them at ECB exchange rates
- Optional help from Claude, off until you switch it on: read a receipt photo or a PDF bank statement, suggest a category, answer questions about your money or sum up a month
- Bill reminders as push notifications and an optional weekly email summary
- A log of who changed what, with restore for deleted transactions and undo for changes
- Export everything as JSON or CSV, or delete the account
- English, Hungarian and Slovak, installable on a phone, light and dark mode
Under the hood
- Server functions with Zod validation and a membership check on every request; amounts stored as integer minor units
- Better Auth with passkeys, two-step sign-in and social sign-in; strict Content Security Policy and CSRF checks
- Sign-in attempts rate-limited with the limits kept in the database; invites are sent only from verified accounts, at most 10 an hour
- Changes reach other devices and members through Server-Sent Events; server-only modules keep the database driver out of the browser bundle
- Playwright tests with axe accessibility checks on desktop and mobile; Docker image built in GitHub Actions and deployed with nightly database backups
Changelog
- Rebuilt from scratch: Next.js and MongoDB replaced by TanStack Start and PostgreSQL with Drizzle
- Custom JWT auth replaced by Better Auth, Redux by TanStack Query and Zustand
- daisyUI replaced by Tailwind CSS 4 and shadcn/ui with a new design
- When
- 2024 – 2026
- Type
- Personal
- Versions
- TanStack Start 1.169
- React 19.2
- PostgreSQL 18
- Tailwind CSS 4
- TypeScript 6
- Stack
- TanStack Start
- React
- TypeScript
- PostgreSQL
- Drizzle ORM
- Better Auth
- TanStack Query
- Zustand
- Tailwind CSS
- shadcn/ui
- Recharts
- Paraglide
Playwright
- Docker
Gallery





