MooMoolah
A terminal-based personal budget planning application built with Python and Textual.
Your data is stored locally in a JSON file, keeping your financial information private and accessible offline.
Features
- 12-month forecast view - Shows projected expenses, income, and balance for the next 12 months
- Expense and Income management - Add, edit, and delete expense/income entries
- Recurring entries - Support for one-time, monthly, and yearly recurring transactions
- Category tracking - Organize entries by categories
Screenshots
Main screen:
Adding an expense:
Installation
Install MooMoolah using pip:
pip install moomoolah
Usage
Run the application with an optional state file:
moomoolah [state_file.json]
If no state file is provided, MooMoolah will use a default location following the XDG Base Directory specification:
$XDG_DATA_HOME/moomoolah/state.json(ifXDG_DATA_HOMEis set)~/.local/share/moomoolah/state.json(default on Linux/Unix)
The state file will be created if it doesn't exist. State files are stored with restricted permissions (600) for security.
Usage
Navigation
- Main screen:
e(manage expenses),i(manage income) - Entry screens:
Insert(add entry),Delete(remove entry), click row to edit - Global shortcuts:
Ctrl+S(save),Ctrl+Q(quit),Escape/Backspace(back)
Entry Management
Each entry includes:
- Description and amount
- Category for organization
- Recurrence type (once, monthly, yearly)
- Start date and optional end date
- Frequency interval (e.g., every 2 months)
Development
See plan.md for current development roadmap and planned features.
This project uses uv for dependency management.
Setup
-
Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Install dependencies:
uv sync -
Run the application:
# With default state file location uv run moomoolah # Or with a specific state file uv run moomoolah <state_file.json>
Running Tests
uv run pytest
Metadata
Release files for moomoolah 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| moomoolah-0.3.0.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| moomoolah-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.4 kB
Release files / moomoolah-0.3.0.tar.gz
| Download URL | moomoolah-0.3.0.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
86f977a2c3519b2f1d85037ba6c41b9ef1c5ad0e303d318a98ef8d780338e9fe
|
|
BLAKE2b-256 checksum How to use checksums |
e23a4332a080e97a6db685632d78fd76e2b3302a28f01a845a97675bd851b2ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|
Release files / moomoolah-0.3.0-py3-none-any.whl
| Download URL | moomoolah-0.3.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
227606a0f6f4d7e27d7643329be77047a365882bb637317a9a159124318a58ce
|
|
BLAKE2b-256 checksum How to use checksums |
50a5239c237bf1302e126f6b65c4ae2a299baaa58baf376b9e54c8effd837b4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|