Skip to main content
  1. Posts/

I'm developping a Money Management Software based on the Enveloppe System

·456 words·3 mins
Lacroix Raphaël (Chepycou)
Author
Lacroix Raphaël (Chepycou)
I’m Raphaël LACROIX, a French computer scientist developping various applications in my free time ranging from definitely useless to somewhat usefull. I also do quite a lot of Capture the flag and cybersecurity challenges.
Table of Contents
Money Management Software based on the Enveloppe System - This article is part of a series.
Part 1: This Article

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.

alt text

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 better tests (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
#

Money Management Software based on the Enveloppe System - This article is part of a series.
Part 1: This Article