Skip to main content

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
  • Guide file

    • External guide.txt stored in ui/
    • Loaded safely using a relative path
  • Persistent storage

    • All data saved in budgetbuddy_data.json

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

budgetbuddy-0.0.4.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

budgetbuddy-0.0.4-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

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

Hashes for budgetbuddy-0.0.4.tar.gz
Algorithm Hash digest
SHA256 5ee923b14cdaba9e1fdc666619831b15c523c408cb81ad22ed9b25284c9b8bb0
MD5 192fa759c7b0514ace0e8f5ffbaa5263
BLAKE2b-256 8302d1967ac179f16ae1fff01123e47a544e8642058fb2e4ebd3cea40de525c4

See more details on using hashes here.

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

Hashes for budgetbuddy-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 06043d14c7691e521a232cce51e81b60cd47ad7a57697fdab8c89795a851c922
MD5 da333f9c72b8a026c514e103b54589d4
BLAKE2b-256 55587e049fac606315df13c31de5354218f1897e2e44aefa78ec69c7376224f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page