Your money, finally clear.

A self-hosted personal-finance app with a smart, swipe-to-categorize workflow and automatic shared-expense detection. Try it below with placeholder data β€” then spin up the real thing in Docker.

Dashboard

A snapshot of this month

Balance, cash flow and where the money actually went.

Current balance
8.412,67 €
across 2 accounts
Income Β· May
+3.281,00 €
salary + reimbursements
Expenses Β· May
-1.964,38 €
58 transactions

Income vs expense

Income +3.281,00 €
Expense -1.964,38 €
Net saved +1.316,62 €

Top categories

πŸ›’
Groceries
512,80 €
🏠
Housing
450,00 €
🍽️
Eating out
274,15 €
πŸ“Ί
Subscriptions
61,96 €
Transactions

Every move, neatly tagged

Color-coded badges for income, expense and investments.

πŸ’Ό
NΓ³mina Northius
Income Salary Β· 01 may
+2.150,00 €
πŸ›’
Mercadona
Expense Groceries Β· 28 may
-64,20 €
πŸ“ˆ
MyInvestor Β· S&P 500
Investment ETF Β· 27 may
-300,00 €
🎬
Netflix
Expense Subscriptions Β· 26 may
-13,99 €
πŸ’Έ
Isabel GonzΓ‘lez Matos
Income Reimbursement Β· 29 may
+72,25 €
β˜•
Starbucks
Expense Coffee & snacks Β· 25 may
-4,85 €
The headline feature

Tinder mode

Swipe, drag or tap to triage suggestions in seconds.

1 of 5
Skip
Accept

Tip: drag the card left or right, or use the buttons. In Shared expense mode the app auto-detects reimbursements β€” e.g. an income from Isa that is about 50% of a Mercadona expense β€” and offers to link them at the right split.

Why happy-balance

Built for real life, not spreadsheets

✨

Smart categorization

Learns from your swipes and auto-tags new transactions by merchant and pattern.

πŸ”—

Shared expenses

Detects reimbursements from a partner at ~50% and links income to the original expense.

πŸ“Š

Clear dashboard

Cash flow, category breakdowns and balance trends at a glance.

πŸ“ˆ

Investment tracking

Tag ETF and stock purchases so saving and investing stay separate from spending.

πŸ“₯

CSV import

Bring in your bank exports and deduplicate automatically.

πŸ”’

Self-hosted

Runs in your own Docker stack β€” your data never leaves your machine.