Why we doing this again ? #
Hey there, 👋
My wife being a fan of money management through the Envelope System and me being a nitpicking computer scientist who hates when things don’t work as I want, making my own Money Management System was a question of when
rather than if
.
We first used denaro
and tinkered around its functionalities to create monthly allocations, this was a bit buggy but worked at first.
But then I realized that one could not edit a repeated transaction (ex : paying the internet or electricity bill, which is the same every, month). And the edition of a transaction was handled in the worst way possible. Assume the phone bill changed from 10.99 to 12.99, I would have to :
- Set an end date on the repeated transaction
- This would create a new repeated transaction with the right first and last dates, but it would also leave the old transaction items, without them being linked to any repeated transaction
- Then delete manually every orphan transaction thus created
- Then create a new repeated transaction with this new value and pray and hope the phone bill does not change soon again :/
What did we do #
I thus started doing this with zero knowledge of application building (especially desktop applications). Since this was not hard fun enough I decided to use a quite niche/quite new framework called tauri
. Here is a brief overview of my tech stack in no particular order :
- Tauri
- Vite
- Svelte (so typescript)
- Rust (for now almost none since everything is client-side)
I figured out most things on the fly, and reached the MVP stage where my app handles :
- Categories
- Transactions (added, edited, deleted)
- Repeated Transaction (added, split, edited, deleted)
- Setting monthly budgets for categories It is currently at version 0.0.10, and I have no clue as to when it will reach stable 😅
This is already pretty good, and I use the app daily. Still, there are a lot of things left to do :
- Design something that looks good (being a CLI and not a Material 3 Expressive type of guy, you’ll guess this was no priority of mine)
- Build the app (For now I only have an AppImage requiring GLIBC_2.39 so my wife’s Ubuntu 22 kindly insulted me when she tried to use the app)
- Write
bettertests (for now about 30% of functionalities are test-covered. I know, that’s bad) - Add more ingestors (for now I only wrote a quick and dirty script to create a database from
denaro
’s database, could be better) - Make everything possible server side and use a
sqlite
database rather than a json file on disk (yup I did that so far 🤐)
Screenshot time #
