Skip to main content

MiniBudget

License: AGPL v3

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:

  1. Beancount doesn't have a budgeting feature
  2. Google Sheets seemed far too complex and inefficient for such a simple set of operations

Quickstart

Install with pipx

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

Run from Source

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.

Documentation

Possible Features

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.

Budget Format / Parsing

  • 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.

Data Handling

  • 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

Conversion from other formats

  • Convert ledger records to minibudget format
  • Convert csvs to minibudget format
  • Convert JSON output format back into

Outputs / rendering

  • 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

Completed Features

  • 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

Metadata

Release files for minibudget 2024.11.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for minibudget 2024.11.4
File Size Uploaded
minibudget-2024.11.4.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for minibudget 2024.11.4
File Interpreter ABI Platform
minibudget-2024.11.4-py3-none-any.whl Python 3 none any Details

Total release size: 23.3 kB

Release files / minibudget-2024.11.4.tar.gz

Download URL minibudget-2024.11.4.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8794371711f9d632b42db42ec553221e7f5e4ac58299d99db9c3750c77b217b5
BLAKE2b-256 checksum
How to use checksums
cda63c01b7266de41a003abc1f544687aab66ea28cfbec74c8502be660f82a63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / minibudget-2024.11.4-py3-none-any.whl

Download URL minibudget-2024.11.4-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
460db2e688492fe66036718ebcbf87b016b2aca8f2022dd937d0e957a67d5bbf
BLAKE2b-256 checksum
How to use checksums
ac0b617a7c7e4d633ee371ad743b67a6fc36278f3d2ddfcf10b0060878fd4dbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

2024.11.4 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page