Kasa - The personal finance tracker for the hashtag era. Randomized testing data displayed.
It's that time of the year again when daylight is only seen from office windows and the darkness of evenings comes way too early. Getting much more home time, I wanted to finally get a better overview of my spending. Fortunately we live in the age of apps - you need something? There's an app for it. I searched for some of that do-it-all-for-you apps, but privacy was my primary concern. Pretty much all the popular personal finance apps take your financial data and upload it to some server to crunch it. I find that completely unnecessary. It's just a bunch of numbers, why does it need to live on a remote machine where I have zero control over it and zero control over who has access to what I spend my money on? All I want is to get the transactions file from my bank every week, throw it at some app, put some tags on things and see where my money goes. Simple enough to not require any fancy servers right?
So I turned my search into the open source ranks as I know there are some popular apps like KMyMoney or GnuCash. I tried all of them and I wasn't happy with any of them. KMyMoney and Skrooge, the duo from KDE Applications suite, are swiss-army knives that I personally find hard to navigate for my simple needs. Skrooge especially - after the import it generates a dashboard with 22 random sized widgets in no particular order. It felt so overwhelming and intimidating that I knew it's not for me and I had to close it immediately (sorry Skrooge). GnuCash takes 7 seconds to load for whatever reason and I couldn't figure out how to categorize transactions, which is the most important feature to me. Then there's HomeBank. This one came closest to what I was looking for but it was missing some features that I wanted, one of which is showing the actual amounts for tags. Also the categorization feels needlessly complicated. I feel like all the pieces are there, they're just not put together the way I wanted.
At the same time I was really missing coding in Qt. My last two years have been only Android Java and if you've ever worked in that, you know how frustrating it can get at times. Very, if you've never worked with it. Although it's helped a lot by Android Studio, which is just the best IDE I've ever used. Anywho, so there I was, wishing to do some C++/Qt again on long winter evenings without an app I wanted. So I just started coding - cause how hard can it be?™
It's a very simple app - you throw an OFX file at it, it stores all the transactions from it in local database, you put tags on them and then you profit. Nothing more, nothing less. For now. The functionality at this point is extremely basic, it's pretty much just a glorified spreadsheet, but already covers lots of my needs.
So what can you actually do? You can (multi-)tag and edit transactions. The tags are then put into a pie chart which shows you exactly where your money goes, tag by tag. You can explore your transactions by tags. You can also set custom date range for the data that it's showing, this way you can immediately get a report for last 7 days, last 17 days, last 7 months, fully up to you.
Here be dragons
Kasa right now is lightyears away from something I'd consider releasing into production. It's pre-pre-pre-alpha, but it's good enough to put it out there and get some extra eyes and hands on it. At this point it needs both code and design. Mainly design. Please get in touch if this sounds interesting to you and you'd like to contribute!
The main thing I'm working on right now is to provide much better tagging experience, including bulk tagging, tags auto-complete and easy tag removal. After that I'm going to add a setting where you can define your statement period and it will default the date range to that on start (and it will auto-advance each month too). Then it's in serious need of error handling. Right now it's virtually non-existent, it always assumes valid OFX file and so on. This will be crucial. Another thing I want to work on is multi-accounts support. While the database is already set up for that, the rest of the app isn't really; right now I'm mostly focusing on my single credit-card account use case. Next, I want to have some budgeting options per tags and then track how the budget is doing. Eg. set 100/month for eating out, how much was already spent and how much is left? Etc.
Get it (the code)
The app is all open source and you can get it and build it from here. All you need is Qt 5 (including QtCharts), CMake and libOfx.
What does "Kasa" mean?
The word means "cash register" in Czech. I started with it only as a codeword for the project but then it kinda stuck. I may still rename it somewhere down the line.
Is/Will Kasa be for me?
My ultimate end goal for this project is to be a good personal finance tracker - not manager. I simply want this app to show where the money goes each week/month/quarter based on bank provided files (with manual input later as well). If you want/need anything beyond that, stick with the existing apps like KMyMoney, Skrooge, GnuCash or HomeBank, they're much better suited for that.
Why not help improve existing apps?
I did consider it of course but there are couple reasons - my time for this is extremely limited. All the existing apps are pretty big and I wanted to spend my limited time on actually writing Qt code rather than trying to understand the existing codebases and then try to change those to what I wanted to have. I just wanted to code something and I wanted to scratch my itch. So I just put those two together.
Yes please! At this point I'm focusing on the data layer and business logic and I wanted the UI to remain as simple as possible for that, for which QWidgets are good enough. But at some point I definitely want to write a QML UI for this. QItemDelegates are....not so great :) Patches welcome!
When will this be ready for regular use?
I have no dates set. It's just a hobby project to refresh my C++/Qt knowledge and I work on it every now and then. Who knows, maybe it will never see an actual release. But if you wanna help, code or design, be sure to let me know!
That said, happy 2019!