A personal finance management system
Project description
BudgetBuddy
A simple command-line budget tracking package for managing income, expenses, and multiple user profiles.
BudgetBuddy provides yearly and monthly summaries, transaction editing, and persistent data storage using JSON.
Features
-
Multiple profiles
- Create, rename, delete, and open profiles
- Each profile stores independent transactions
-
Record transactions
- Income or Expense
- Includes date, amount, category, and optional description
-
Yearly transaction view
- View all transactions for a selected year
- Edit or delete transactions through a submenu
-
Monthly summaries
- For each month of the chosen year:
- total income
- total expenses
- For each month of the chosen year:
-
Guide file
- External
guide.txtstored inui/ - Loaded safely using a relative path
- External
-
Persistent storage
- All data saved in
budgetbuddy_data.json
- All data saved in
Package Structure
budgetbuddy/ init.py # exposes budgetbuddy.run()
core/
__init__.py
models.py # UserProfile, Transaction, Income, Expense
budget.py # Month totals, calculations, helpers
data/
__init__.py
repository.py # load/save JSON, manage profile storage
csvio.py # (optional) CSV import/export
ui/
__init__.py
main.py # CLI menus and program controller
summary.py # pretty-printed text summaries and listings
guide.txt # help/guide text displayed in the menu
The main data file (budgetbuddy_data.json) is created in the same directory where the program is run.
Running the Program
Create a runner python file (eg. test.py) that contains:
import budgetbuddy
budgetbuddy.run()
and run:
python test.py
notes: the test file should be in the same directory as the package!
Profile Menu Example
Profile menu for 'janet':
1) Record income
2) Record expense
3) View all transactions this year (2025)
4) Change year
5) View monthly summaries for this year (2025)
6) Back to Saved profiles
Yearly view submenu:
[0] 2025-03-12 | Expense | 12.50 | Food | Lunch
[1] 2025-03-15 | Income | 100.00 | Gift | Birthday
Options: e = edit, d = delete, b = back
Data Storage
BudgetBuddy reads/writes profiles through:
budgetbuddy/data/repository.py
JSON file:
budgetbuddy_data.json
is automatically generated on first run.
Requirements
Built on Python 3.8+ and uses only the Python standard library:
- json
- os
- pathlib No external installation needed.
Purpose
This project demonstrates:
- Python package design
- Separation of logic (core), storage (data), and UI (command-line interface)
- JSON-based persistence
- Clean class-based modeling for profiles and transactions
- Multi-file architecture for medium-size programs Created for a graduate-level software development course.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file budgetbuddy-0.0.4.tar.gz.
File metadata
- Download URL: budgetbuddy-0.0.4.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee923b14cdaba9e1fdc666619831b15c523c408cb81ad22ed9b25284c9b8bb0
|
|
| MD5 |
192fa759c7b0514ace0e8f5ffbaa5263
|
|
| BLAKE2b-256 |
8302d1967ac179f16ae1fff01123e47a544e8642058fb2e4ebd3cea40de525c4
|
File details
Details for the file budgetbuddy-0.0.4-py3-none-any.whl.
File metadata
- Download URL: budgetbuddy-0.0.4-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06043d14c7691e521a232cce51e81b60cd47ad7a57697fdab8c89795a851c922
|
|
| MD5 |
da333f9c72b8a026c514e103b54589d4
|
|
| BLAKE2b-256 |
55587e049fac606315df13c31de5354218f1897e2e44aefa78ec69c7376224f4
|