Skip to content
Ákos Kappel
Language: en
Theme
Light
Dark

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).

BudgetMaster home with what is left of the monthly budget and the spending pace

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
Quick add with a typed line that filled in the amount and payee
Quick add: type "coffee 3.20 cash yesterday" and the form fills itself; known payees bring their category.
Activity list grouped by day with search and filters
Activity: every transaction grouped by day, with search and filters that stay in the link.
Budgets page with the spending pace chart and category budgets
Budgets: the spending pace against last month and a limit per category, warned before it runs out.
Reports with income and spending per month
Reports: a year of income and spending, money flow, net worth, trends and a spending calendar.
Recurring payments with their schedule and yearly cost
Recurring payments record themselves on their due date; subscriptions show what they cost a year.
Home in Hungarian with the monthly budget and spending pace
The whole app also runs in Hungarian and Slovak, with local number and date formats.

1 of 6

Quick add with a typed line that filled in the amount and payee

Quick add: type "coffee 3.20 cash yesterday" and the form fills itself; known payees bring their category.