Back in 2018, I had a simple problem: I wanted to track my income and expenses without handing my financial data over to some big tech company. Sounds reasonable, right? Every finance app I found either required a subscription, lived in someone else’s cloud, or wanted access to my bank account. No thanks.
So I did what any reasonable software engineer would do — I built my own.
The Early Days
The first version of Financer was a desktop application built with JavaFX. It was simple, it was local, and it did the job. But I quickly realized I wanted something I could access from anywhere — not just from one machine. Time for a rewrite.
The Rebuilds
Version two became a proper web app: a Java Spring backend with a React frontend. It worked well, I learned a ton about Domain Driven Design and full-stack architecture, and it gave me exactly what I wanted. But as my skills and opinions about tech evolved, so did the project. The third and current iteration runs on Next.js with TypeScript and Blitz.js, backed by MySQL and Redis, all wrapped up in a neat Docker Compose setup. A far cry from that first JavaFX window.
What It Does
At its core, Financer lets you manage your personal finances — income, expenses, fixed and variable transactions — organized into custom categories and tags. You can manage multiple households, track counterparties, import and export data, and get visual insights through a dashboard. Everything runs on your own server, so your data stays yours.
Where It’s At
The project is very much alive and actively being improved. It’s not “done” — is any side project ever really done? — but it’s functional, self-hostable, and getting better with every release. There are still features on my list that I want to build, and I keep chipping away at them whenever I find the time.
Why It Matters (To Me)
Financer started as a weekend idea and turned into a multi-year learning playground. It pushed me through different tech stacks, forced me to think about architecture, deployment, and user experience, and it solved a real problem I had. That’s pretty much the dream for a side project.
If you’re curious, you can check out the code on GitHub — it’s open source under the BSD-3-Clause license.
Leave a Reply