Expense Tracker — A Multi-Workspace Finance Manager Built with .NET Core
How it started
This one actually goes back to my college days. I built an early version of it as a project back then just a basic way to log transactions. But the idea always stuck with me and I kept thinking about what it could be if I actually built it properly.
The core problem I wanted to solve was pretty simple. Most finance apps treat everything as one big flat list. That's fine if you only have one thing to track, but as soon as you want to separate your personal spending from shared expenses, or keep a side project's budget completely isolated, it falls apart. I wanted something where each context had its own space - its own transactions, categories, and balance.
What is unique here ?
The main feature is workspaces. You can create as many as you want. One for personal finances, one for shared household costs, one for a side project and many more workspace as you need. Each one is completely separate with its own transactions, categories, and balance.
Within each workspace you can record income and expense entries, assign them to categories you define yourself, and mark things as recurring for bills or subscriptions that repeat every month. The summary view gives you a quick picture of total in, total out, and a breakdown by category so you can see where your money is actually going.
Status of the project
Right now it's a working prototype. The core fetures are all functional.
It's one of those projects I keep coming back to when I have time. The plan is to eventually migrate the frontend to Vue.js, add charts and also even add features which is required for a user to record their transactions. I also want to publish a Docker image so anyone can self-host it easily.
What I'm learning from it
This project has been a good exercise in building something long-term. It's easy to keep a project clean when you're sprinting to ship it. It's a lot harder when you're returning to it in small sessions over months. So it's been a useful lesson in writing code that's readable and maintainable enough that future-me isn't completely lost when picking it back up.
The multi-tenant data model was also an interesting design challenge.
Hopefully I'll have a proper v1 to show off soon. 🤘