For longer than I can remember, I have done all my personal budgeting using a script I wrote called plainbudget, which is now presented here ported to JavaScript, built with Nuxt.
It's designed to be extremely minimalist and processes text formatted like a series of value groups, like a basic bank statement. Depending on what operations you define, you get a computed sum at the end or at the top of each group.
There are two kinds of value groups: cashflow and expense. A cashflow value group always starts with one or more + operations, followed by one or more - operations. Calculating a cashflow group will add an extra line with the result:
An expenses value group can be used to simply calculate a series of expenses. These groups always start with a = operation, followed by one or more - operations. Calculating an expenses group adds the result right at the top and will register the group so that it can be referenced in cashflow groups.
That's why expense groups will always be calculated first.
You can also use x [number] to multiply a value.
This is a work in progress. The goal is to turn this into a web application where an user can have multiple sheets and save/export his work. If you feel like helping check out these open issues.