Pup Sabin My Budgeting App
Aug 02, 2025

My Budgeting App

When Mint shut down, I decided to make my own budgeting app because nothing else really worked how I liked. Here's a bit of an insight into some pieces of it that I really like.

8 min read

Mint, My Beloved

Mint was a great budgeting app and did pretty much every I’d ever want it to do, and then some: it was even one of the few apps that would connect to the Apple Card to pull transactions automatically. You can ask my partner, it was a very sad day in the house when I found out Intuit was sunsetting Mint. I looked for alternatives that were within a similar price range with a similar look and feel, but just could not find anything that had what I was looking for. I’d say this was more of a “me problem” than something that was inherently wrong with any of the apps. At the time, my partner was using YNAB, and I gave that a try, too. Again, it just didn’t have the right flow I wanted.

Well, if I’m anything, I can be very stubborn and set in my ways sometimes. I wanted a budgeting app and I wanted it MY way, dammit! While I was searching for an app to use, my partner and I had been joking about me making my own. This was a pretty big project to take on and not something I could get a third of quarter of the way through and toss aside like my other pile of incomplete side projects. I’d, gasp, have to follow through. Telling that to someone with ADHD and depression will get you laughed at.

The First Steps

Okay, so eventually I sat down and took my experience from work and my own knowledge of .Net C# to put together an entity relationship diagram (ERD) to map out what and how I’d need to store in a database. I used Visual Studio to scaffold pages for bank accounts, merchants, categories, and transactions. Before I knew it, I had a working prototype that would allow me to do basic CRUD (create, read, update, delete) operations on these entities. Seeing this progress gave me enough energy to do the next part: budgets.

Conquering the First Hurdle

I needed to be able to track spending my category and roll up child category spending in the parent category to display this on a page. This page needed to show each category that I want to track spending for, and it would need to visually indicate how much money is left for that category in the budgeted time span. Well, I’m not a creative guy when it comes to UI/UX, so I wholesale ripped the design from Mint for the most part. It turns out that progress bars are great for this sort of thing.

There was a significant amount of data juggling to aggregate all this information as well as any spending that was not allocated in the budget. With enough effort, I was able to get this done and damn was I happy with it. So now we had an MVP that I could host on a little raspberry pi. I then learned about how to set up a domain, do DNS magic to point the domain to my raspberry pi, and lock things down. I even wrote some code that would let me take a CSV export from Mint and load it into my web app. That was used all of one time and I think the code is still sitting out there doing nothing, but data loading is a key part to any go-live.

Improvements

As the days went on, I gradually polished to the web app and added new features like budget rollover to carry unspent money from one month to the next (or to carry overspending into the next month). I’m particularly proud of this one because of how cleanly it displays in the budget.

At my partner’s request, I added the ability to track different savings goals: a feature from YNAB that she required to fully move over to what was now dubbed K9 Koinz (codename K2, which ended up being confusing because of the 2 and the 9, but I digress). So I added the ability to create transfers (linked paired transactions) and savings goals to allocate money to. You could even pull money from savings goals and not have it impact the budget since that was money you explicitly saved previously.

Other features like splitting transactions came next: you could go to Walmart and get a bunch of different stuff that all did not fit in a single category. For example, we can buy groceries, pet supplies, and cleaning products in one transaction according to the bank. Well, this messed with the budget a bit, so now you can separate a transaction into multiple splits that hit the budget with their respective amounts. I also added the idea of bills: expenses that you don’t want to show up as lines in the budget, but still need to be tracked and as a fast follow I added scheduling transfers and bills to happen automatically.

Early on, I migrated from a raspberry pi to a different tiny little PC thing that runs Ubuntu and acts as a low powered home server: perfect for small projects like this.

And that was about it for the original version of K9 Koinz. It was a lot of hard work and we used it for well over a year with bug fixes and quality of life improvements throughout that time. Surprisingly, I had not really grown weary of the project.

Version 2

I started to get an itch to rewrite the entirely of K9 Koinz, except for the database and basic ORM that sits on top of it. This itch had started and stopped several times as I tried out different frameworks, but I eventually decided to migrate the site from Razor Pages to Blazor. My mind was buzzing it the possibilities of what server side interactive rendering could offer, especially since I didn’t have to write tons of hacked together Javascript in Blazor to do what I wanted.

Against my better judgement, I took the winter holiday break one year to rip apart K9 Koinz and finally do the rewrite I’ve been dreaming about. It was definitely quite the undertaking and results in me eventually scrapping nearly every bit of code except for the high level design and the database structure. Blazor let me do a lot more with less work and with the MudBlazor package sitting on top to do a lot of the heavy lifting for look and feel, I was very pleased with how the rewrite was coming along. This really was a version 2 and it was truly exciting to see it come together.

More Improvements

After the launch of K9 Koinz Reloaded (later rebranded to K9 Koinz Gold), I had a lot of bugs that needed fixing, but things were working smoothly overall. The entire app got a face-lift but still remaining looking familiar enough that there was a minimal relearning curve for my partner. Some parts of the app today are still not looking the way I want them to, but they’re not parts that are accessed all that much and are therefore pretty low priority.

New features were adding and existing feature got huge upgrades: savings goals are now fancier, budgets are easier to edit and view, and tags got completely repurposed. Things are a lot more visual and the flow throughout the web app is a lot nicer on mobile than it used to be. A lot of quality of life improvements were added, too.

Reflection

Looking back, this is something that I’m really proud of and it’s something that my partner gushes about to everyone who will listen. I’m most proud of the work that I’ve done and how I’ve stuck with it through the years now. The app has given us a better view into our finances and how we allocate money to retirement, savings, needs, and wants.

Is there probably an alternative to Mint today that works the way I want it to, I’m sure there is. Do I want to switch to it? Hell no. I don’t think this web app will last forever, but for the time being I don’t see moving away from it. It’s fun to use, rather easy for me to maintain, and has delivered insights into finances that we simply wouldn’t have all in one place with other tools.

Comments