Finance Manager

This is a python program I wrote to help keep track of and manage my finances. The system it's built on was originally just a spreadsheet but I got sick of writing the boilerplate out every time, so I wrote this program to handle all of that for me. The system is essentially just a ledger of each transaction over the course of a month. However, the program has since been expanded with the ability to archive each month's ledger, and then read each archive for clarity.

There's a great satisfaction in writing software that I then use regularly. Unfortunately once I come to rely on it I'm much less likely to get around to updating or patching any problems I have with it, which is why I've been considering a full rebuild of the project to iron out some issues, and also to reconsider some design choices.



Things that should be done

I've cheated slightly putting this in the "made" section because the project isn't totally complete. It's complete to MVP, so I use it on a daily basis to manage my finances, but there are a couple of features I think it's still missing, and issues with it I should get around to fixing.

However just because I know they need doing does not mean I'll ever get around to doing them. This project does what I need it to, which means the chances of it getting fixed without a full rebuild and redesign of the program's architecture are pretty slim
That said, the things that I'd like to do at some point are:

- When creating a new entry, instead of defaulting the date to previous entry +1, I'd like it to do a "GetTime" call for the current day, as that's a situation I find much more common than a 1-per day transaction routine.

- It doesn't have a virtual accounts feature, which was part of the original idea. The premise is that it would allow one to separate money into different "pots" for different things, creating a way to visually allocate money to a holiday, or car repairs, or a new computer, or what have you. It would be good to implement that at some point.

- A huge problem is that despite an account being password protected, the actual ledger is stored in plain, unencrypted json. This is obviously less than ideal.

My thinking is that if I ever find the time to rewrite this project, I will do it in C++ so as to create an executable that I can install to my Program Files directory, and just run as needed. This will both allow me to keep working in C++, which as I've said elsewhere, it's important I keep practising. It will also allow me to expand the capabilities of the software without losing access to the version I currently use to keep track of income and outgoings.