Skip to content

NFBaeza/Budget-Monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

122 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Budget Monitor

A desktop application for personal finance management built with Qt6 and C++. Track your income and expenses, visualize spending patterns, and monitor your monthly budget with an intuitive interface.

Features

  • Transaction Management: Add, view, and track financial transactions
  • Category-based Organization: Separate income and expense categories
  • Visual Analytics: Pie chart visualization of expense distribution
  • Monthly View: Analyze transactions by month and yearly Savings.
  • Credit Cards preview: Analyze usage and future payments.
  • Real-time Updates: Dashboard updates automatically when new transactions are added
  • Multiple Payment Methods: Support for different payment accounts
  • User Accounts: Login, signup, and auto-login via Supabase authentication
  • Database Persistence: Data stored remotely via Supabase
  • XLSX Import: Add transactions via XLSX bank statement files with automatic category classification
  • PDF Import: Add transactions via PDF bank statements (debit and credit card) using a dedicated bank-statement parser

Screenshot

Login UI Month View UI

Technical Stack

  • Qt Framework: 6.x
  • Programming Language: C++ 17
  • UI Design: Qt Designer (.ui files)
  • Database: Supabase (authentication and data persistence)
  • Build System: CMake
  • Architecture: Model-View pattern with QSqlTableModel and QSqlRelationalTableModel
  • Networking: Qt Network module for Supabase REST API calls

Project Structure

budget_monitor/
├── libs/                       # External libraries
│   ├── XLSXReader/             # XLSX bank statement parser (git submodule)
│   └── bank-statement-parser/  # PDF bank statement parser (git submodule)
├── include/            # Header files
│   ├── database/       # Database manager and worker headers
│   ├── dialogs/        # Dialog headers
│   ├── reportservice/  # Compute methods header
│   ├── views/          # Main window headers
│   └── widgets/        # Widget headers (Dashboard)
├── src/                # Source files
│   ├── database/       # Database manager and worker implementations
│   ├── reportservice/  # Compute Summaries and total by card
│   ├── dialogs/        # Dialog implementations
│   ├── views/          # View implementations
│   └── widgets/        # Widget implementations
├── ui/                 # Qt Designer UI files
├── imgs/               # Screenshots and assets
└── CMakeLists.txt      # Build configuration

Database Schema

The application uses three main tables (all scoped per user):

  • money_transactions: Stores all financial transactions
    • id, user_id, date, amount, category_id (FK), account_id (FK), description, original_description
  • categories: Income and expense categories
    • id, user_id, name, type (income/expense/transfer)
  • accounts: Available payment accounts
    • id, user_id, name, type (debit/credit/investment)

Building from Source

Prerequisites

  • Qt 6.x or higher
  • CMake 3.10 or higher
  • C++17 compatible compiler
  • A Supabase project (for authentication and database)

Build Steps

# Clone the repository
git clone --recursive  <repository-url>

# Or, if you already have this repository cloned
git submodule init
git submodule update

# then

cd budget_monitor

Configure environment

Copy the example file and fill in your Supabase credentials:

cp .env.example .env

Edit .env with your values:

# Database connection (Supabase PostgreSQL)
DB_HOST=your-project.supabase.co
DB_PORT=6543
DB_NAME=postgres
DB_USER=postgres.your-project-ref
DB_PASSWORD=your-db-password

# Supabase authentication
SUPABASE_URL=https://your-project-ref.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

You can find these values in your Supabase dashboard under Project Settings > Database and Project Settings > API.

Set up the database

Run the SQL migration script in your Supabase SQL Editor (Dashboard > SQL Editor > New query):

Copy and paste the contents of sql/setup.sql, then click Run. This creates the required tables (categories, accounts, money_transactions).

Build and run

# Create build directory
mkdir build && cd build

# Configure with CMake (this also copies .env into the build directory)
cmake ..

# Build the project
cmake --build .

# Run the application
./budget_monitor

Usage

  1. Launch Application:
    • Click "Current Month" to access the current dashboard.
    • Click "Credit Card preview" to access the your credit card usage and future payments.
    • Click "Savings" to access the yearly savings analysis.
    • Click "Past Month" to access the month view of selected month.
  2. View Dashboard: See monthly summary with an income/expense breakdown and credit card usage.
  3. Add Transaction: Click "Add Entry" button
    • Enter amount and description.
    • Choose category and payment method.
    • Write description.
    • Click OK to save.
  4. Import Bank Statement: Click "Add file" button
    • Select Account (Account must match your file).
    • Add file path (supported formats: .xlsx, .xls, .csv, .pdf).
    • Click OK to save.
  5. Edit Table: Double click on a transaction
    • Modify fields and press "OK" button
    • Press "Delete" to remove the transaction
  6. Edit Category: Click "Edit" button
    • Press "+" to add Income/Expense category
    • Press "-" to remove category (Be careful with this action)
    • Double-click on categories to rename them
  7. View Analytics: Pie chart shows expense distribution
  8. Navigate: Use "Back" button to return to main menu

Roadmap

  • User authentication (Supabase)
  • XLSX bank statement import with auto-classification
  • PDF bank statement import (debit and credit cards)
  • Remote database integration (Supabase)
  • Date range filtering
  • Export to PDF
  • Budget goals and alerts
  • Multi-currency support

Author

Natalia B

About

Budget Monitor is software that helps you manage your finances quickly and easily.

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors