https://github.com/iamantimpal/budget_app
https://github.com/iamantimpal/budget_app
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/iamantimpal/budget_app
- Owner: iamAntimPal
- License: agpl-3.0
- Created: 2025-04-10T08:29:54.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-04-14T12:50:56.000Z (6 months ago)
- Last Synced: 2025-04-23T18:18:39.030Z (6 months ago)
- Language: Python
- Size: 157 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Budget Management Application
A lightweight, CSV‑backed budget management application built with Python’s Tkinter library. This application features a secure login and registration system, a menu‐driven interface to navigate through Dashboard, Add Entry, and Reports screens, and a dark/light theme toggle. All data is persisted using CSV files stored in the `data/` folder.
[](https://opensource.org/licenses/MIT)
[](https://github.com/iamAntimPal/ThinkTrack/blob/main/LICENSE)
[](https://github.com/iamAntimPal/ThinkTrack/commits/main)## Features
- **User Authentication:**
Secure login and registration using password hashing (bcrypt) with credentials stored in CSV.- **Dashboard:**
A sample dashboard displaying a welcome message and a sample pie chart for expense breakdown.- **Add Entry:**
A form that lets users add income or expense entries with fields for type, amount, category, date, and description.- **Reports:**
Export sample budget reports to PDF or Excel using third-party libraries (`fpdf` and `pandas`).- **Theme Toggle:**
Easily switch between light and dark themes with a toggle button.- **CSV Persistence:**
Data is stored in three CSV files under the `data/` folder:
- `users.csv` – Stores user credentials and preferred currency.
- `entries.csv` – Stores income/expense entries.
- `recurring.csv` – Stores recurring transaction details.## Project Folder Structure
```rb
budget_app/
├── main.py
|── app/ # Application entry point and main menu logic
│ ├── auth.py # User authentication logic using CSV persistence
│ └── manager.py # Business logic for managing entries and recurring transactions
├── data/
│ ├── database.py # CSV file operations for data persistence
│ └── models.py # Data models (Entry, RecurringTransaction)
├── ui/
│ ├── components.py # Reusable UI elements (BaseFrame, LoginForm, MainMenu)
│ ├── dashboard.py # Dashboard screen (shows welcome message & chart sample)
│ ├── forms.py # Entry form for adding/editing income/expense entries
│ ├── reports.py # Reporting interface to export data as PDF or Excel
│ └── styles/
│ ├── light.css # Light theme style definitions (dummy CSS-like file)
│ └── dark.css # Dark theme style definitions (dummy CSS-like file)
└── requirements.txt # List of external dependencies
```> **Note:** The CSV “database” is created automatically under the `data/` folder when the application is first launched.
## Prerequisites
- [Python 3.x](https://www.python.org/downloads/)
- pip (Python package installer)## Installation
1. **Clone the Repository:**
```bash
git clone https://github.com/iamAntimPal/Budget_app.git
cd budget_app
```2. **Set Up a Virtual Environment (Optional but Recommended):**
```bash
python -m venv env
source env/bin/activate # On Windows: env\Scripts\activate
```3. **Install Dependencies:**
```bash
pip install -r requirements.txt
```## Running the Application
1. **Start the Application:**
In the project root directory, run:
```bash
python app/main.py
```2. **On First Run:**
- The application will automatically create the `data/` folder if it does not exist.
- Three CSV files (`users.csv`, `entries.csv`, `recurring.csv`) will be created in the `data/` folder with the necessary headers.3. **Using the Application:**
- **Login / Registration:**
Enter your username and password on the login screen. Use the "Register" button if you are a new user.- **Main Menu:**
After a successful login, you will see the main menu. From here, you can navigate between:
- **Dashboard:** View a sample dashboard with a pie chart.
- **Add Entry:** Open the form to add an income/expense entry.
- **Reports:** Generate and export a sample report as PDF or Excel.
- **Logout:** Log out and return to the login screen.
- **Toggle Theme:** Switch between light and dark themes.## Dependencies
The application uses several external libraries. Refer to `requirements.txt` for the full list:
- `bcrypt`
- `tkcalendar`
- `matplotlib`
- `fpdf`
- `pandas`
- `openpyxl`
- `schedule`Install them using:
```bash
pip install -r requirements.txt
```## Customization
- **CSV Database:**
The CSV files are used for data persistence. You can view and modify these directly from the `data/` folder.- **Theme Files:**
The light and dark theme definitions are provided in `ui/styles/light.css` and `ui/styles/dark.css`. Although Tkinter does not directly use CSS, these files serve as a style reference for applying widget styles.- **Code Extensions:**
The code is structured in a modular and class-based format, making it easy to extend functionalities (e.g., additional reporting features or advanced recurring transaction handling).## Contributing
Feel free to fork this repository and make improvements. Pull requests are welcome!
## License
[MIT License](LICENSE)
## Acknowledgments
This project uses various open-source libraries. Many thanks to their contributors.