Comfy Money - a private multi-currency ledger by Niko MinadzeComfy Money - a private multi-currency ledger by Niko Minadze

Comfy Money - a private multi-currency ledger

Niko Minadze

Niko Minadze

I built Comfy Money because I was tired of looking for a ledger app that worked the way I use money. I had tried plenty. Each did something well, but there was usually a missing feature or another workaround to remember. Keeping track of my spending had started to involve too much work on the app itself.
The biggest frustration was moving between currencies. I might transfer USD into THB, or convert USDT into CAD. I wanted to record what left one wallet and what actually arrived in the other, then see balances that made sense. That became the starting point for my own application.
Comfy Money is a private money tracker for me and my family. I built the Go backend, React and TypeScript interface, and PostgreSQL storage around that everyday workflow: wallets, income, expenses, transfers, budgets and debts.
The dashboard brings wallet balances and spending activity into one view.
The dashboard brings wallet balances and spending activity into one view.
Each wallet keeps its own currency. When I record a transfer, I enter the amount sent and the amount received. Those amounts stay linked, so I can preserve the actual conversion instead of asking an exchange-rate estimate to explain what happened. Moving money between my own wallets stays a transfer, with both sides accounted for.
The overview has a different purpose: it uses cached exchange rates to give me an approximate total in my chosen base currency. Keeping that estimate separate from the recorded transfer amounts matters. I want a useful overview without losing the details of the original transaction.
Wallets retain their own currencies and balances.
Wallets retain their own currencies and balances.
Underneath the interface, I store money in integer minor units, using the precision appropriate to each wallet's currency. Balances come from ledger entries. A transfer creates two linked entries inside one database transaction, so both sides are written together. These are small implementation details with a direct effect on whether I can trust the numbers I see every day.
The rest of the app covers the ordinary work of keeping a ledger: adding income and expenses, organising categories, setting monthly budgets, tracking money owed or owing, and reviewing where the money went. I wanted these parts to feel familiar and easy to return to. A useful transfer model would not mean much if recording a normal expense felt like a chore.
The transaction view keeps the individual records behind the balances visible.
The transaction view keeps the individual records behind the balances visible.
I also needed a way to bring my existing records across. The Money Lover import accepts CSV or TSV files, validates the records and shows a preview before I confirm the import. It pairs transfer rows and replaces only the signed-in user's ledger data in one database transaction. That gave the move from my old app a deliberate review step before anything was replaced.
I paid attention to the interface because I open it all the time. On a phone, adding another transaction often happens while I am doing something else. Clear balances, readable charts and sensible forms matter in that setting. I used Mantine for the React interface, built a mobile layout alongside the desktop workspace, and made the app installable as a PWA. It supports light and dark modes, with interfaces in English, Thai and Russian.
Recording an expense with a wallet, amount, category and note.
Recording an expense with a wallet, amount, category and note.
The result is an application I use every day. My girlfriend and my mom use it too, which gives me a practical test of whether the forms and choices make sense to someone besides the person who built them. I have deleted Money Lover and the other ledger apps I was trying. Comfy Money now does the job I originally wanted: it lets us keep track of our money comfortably, including the currency transfers that made me start the project.
Like this project

Posted Sep 20, 2026

A Go and React money tracker I built for daily use, with multi-currency wallets, reliable transfer records and a comfortable mobile interface.