MiniBudget is a tool designed to enable personal and small business budgeting using a plaintext format. It's inspired by beancount and plainbudget.
I wrote the MVP in an evening because:
- Beancount doesn't have a budgeting feature
- Google Sheets seemed far too complex and inefficient for such a simple set of operations
This is the recommended way to use minibudget. First install pipx if you don't already have it.
Then install. It's best to install the version with [convert]
extras.
pipx install "minibudget[convert]" --pip-args "'--pre'"
You should be able to run minibudget
from the command line like other CLI tools:
wget https://raw.githubusercontent.com/fdavies93/minibudget/refs/heads/main/budgets/example.budget
minibudget report example.budget
Clone the repo. Poetry is the easiest way to run it.
poetry run minibudget report budgets/example.budget
Now take a look at example.budget
to learn more about it.
If you want to use the convert feature then use poetry install -E convert
to
get the required packages.
- budget format
minibudget report
minibudget diff
minibudget convert
minibudget chart
- currency formats
Since this is a deliberately simple tool, the preferred way to implement these is as command line options which generate different types of output. A proper TUI in curses or similar would make this into a finance tool from the 80s, which is probably redundant versus a web app.
Pull requests welcome. I may or may not implement these myself when I feel like it.
- Attach notes to budget categories; view them by using a flag
- Comment syntax
- Metadata for specifying period the budget covers, default currency, etc.
- Budget assertions for explicit and implicit categories
- Allow negative income and positive expenses accounts for edge cases in business & financial records.
- Add a formatting mode.
- Write a treesitter grammar for neovim etc.
- Make treatment of numbers / currency consistent
- Use Decimal / bespoke money handler consistently for currency
- Write consistent currency formatter class or interface; build in concept of 'normal' decimalisation (e.g. USD has 2, NTD has 0).
- Proper multi-currency support
- Add more canned currency formats
- Implement non-regression and unit testing
- Convert ledger records to minibudget format
- Convert csvs to minibudget format
- Convert JSON output format back into
- CSV output for
report
- JSON output for
diff
- JSON output for
report
- Make formatting and report structure customizable
- Stacked bar chart for income and expenses over time (visualising
diff
) - Sunburst chart for income reports, for people with many income streams
- Switch to Calendar Versioning (likely YYYY-MM-R or YYYY-MM-DD)
- Sunburst chart for expenses reports
- CSV output for
diff
- Cool formatting for CLI
- Integrate with beancount via bean-query to import real spending
- Totals for budget categories, not just the top level income / expenses / unassigned