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.
- 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
- 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
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
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)
- Qt 6.x or higher
- CMake 3.10 or higher
- C++17 compatible compiler
- A Supabase project (for authentication and database)
# 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_monitorCopy the example file and fill in your Supabase credentials:
cp .env.example .envEdit .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-keyYou can find these values in your Supabase dashboard under Project Settings > Database and Project Settings > API.
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).
# 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- 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.
- View Dashboard: See monthly summary with an income/expense breakdown and credit card usage.
- Add Transaction: Click "Add Entry" button
- Enter amount and description.
- Choose category and payment method.
- Write description.
- Click OK to save.
- 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.
- Edit Table: Double click on a transaction
- Modify fields and press "OK" button
- Press "Delete" to remove the transaction
- 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
- View Analytics: Pie chart shows expense distribution
- Navigate: Use "Back" button to return to main menu
- 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
Natalia B

