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:

Input + 1000 Salary - Named Expense - 200 Expenses B = Named Expense - 100 Expense X - 100 Expense Y Output + 1000 Salary - 200 Named Expense - 200 Expenses B = 600 = 200 Named Expense - 100 Expense X - 100 Expense Y

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.

Input = Expenses A - 300 Car payment - 100 Plane ticket x 2 - 200 Utilities bill Output = 700 Expenses A - 300 Car payment - 100 Plane ticket x 2 - 200 Utilities bill

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.