A clean, modern personal finance tracking application built with Python and Tkinter. Designed for easy transaction entry and data analysis.
- Simple Transaction Entry: Clean interface for logging income and expenses
- Calculator-Style Amount Entry: Type digits naturally, no need for "$" or decimal points
- Always-Visible Calendar: Quick date selection
- Vendor Autocomplete: Suggests vendors from your transaction history
- Customizable Categories: Easy-to-edit YAML configuration
- Excel Storage: All data stored in Excel format for easy analysis
- Duplicate Detection: Warns when similar transactions exist
- Keyboard Shortcuts: Fast data entry with Enter, Ctrl+N, Ctrl+Q
- Python 3.11+
- pip
-
Clone the repository:
git clone https://github.com/justinschubeck/finance-tools.git cd finance-tools -
Create and activate virtual environment:
python3.11 -m venv venv # On Windows: venv\Scripts\activate # On Mac/Linux: source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
Basic usage (creates/uses default file: 2025.xlsx):
python main.pyCommand-line options for file selection:
# Use current year file (e.g., 2025.xlsx if running in 2025)
python main.py --year
# Use current month file (e.g., 2025_11.xlsx if running in November 2025)
python main.py --month
# Use a custom file name (auto-adds .xlsx if not provided)
python main.py --file Name
python main.py --file test.xlsx
# Show help and all options
python main.py --help- Select Type (Income or Expense)
- Click a Category button
- Pick the Date from the calendar
- Enter Vendor name
- Type Amount (calculator-style: just digits)
- Select Payment Medium
- Add optional Note
- Press Enter or click "Add Transaction"
Enter- Add transactionCtrl+N- Clear fieldsCtrl+Q- Quit
A standalone utility for optimizing loan payments across multiple loans:
python loan_payment_calculator_gui.pyThis tool distributes payments among 6 loans to equalize daily interest across all loans, helping you optimize your debt payoff strategy. It uses symbolic mathematics to solve the optimization problem.
Edit config/categories.yaml:
expense:
- "Restaurants"
- "Gas & Fuel"
- "Your New Category" # Just add it to the list!
income:
- "Salary"
- "Side Hustle"Edit the medium section in config/categories.yaml:
medium:
- "Cash"
- "Credit Card"
- "Your Payment Method"Transactions are saved to Excel files in the entries/ directory:
- Yearly files:
YYYY.xlsx(e.g.,2024.xlsx,2025.xlsx) - Monthly files:
YYYY_MM.xlsx(e.g.,2025_11.xlsxfor November 2025) - Custom files: Any name you specify (e.g.,
Justin.xlsx,test.xlsx) - Files are created automatically if they don't exist
- Columns: Type, Category, Date, Vendor, Medium, Amount, Note
finance-tools/
├── main.py # Application entry point
├── loan_payment_calculator_gui.py # Standalone loan payment optimizer
├── config/
│ └── categories.yaml # Category configuration
├── models/
│ ├── category.py # Category management
│ └── transaction.py # Transaction data model
├── data/
│ └── repository.py # Excel I/O operations
├── gui/
│ ├── main_window.py # Main application window
│ └── widgets/ # Reusable GUI components
└── entries/
└── *.xlsx # Transaction data files
Run quick financial summary:
python analyze.py --yearCreate 30+ charts and plots:
python analyze.py --year --allCreate detailed HTML report with all insights:
python analyze.py --year --reportLaunch Streamlit dashboard for interactive analysis:
python analyze.py --dashboard
# Or directly:
streamlit run analysis/dashboard.pyTime-Based Analysis:
- Monthly cash flow (income vs expenses with net)
- Daily spending heatmap calendar
- Cumulative spending by category
- Transaction frequency timeline
- Seasonal patterns by quarter
- Moving averages (30-day and 90-day trends)
Category Analysis:
- Category spending pie chart
- Category treemap (hierarchical)
- Category trends over time
- Transaction amount box plots
- Category correlation matrix
- Need vs want comparison
Vendor Analysis:
- Top vendors bar chart
- Vendor frequency vs amount scatter
- Vendor spending timeline
- Recurring transaction detection
Payment Method Analysis:
- Payment medium breakdown
- Medium vs category heatmap
- Card utilization timeline
- Cash vs credit comparison
Comparative Analysis:
- Income vs expense waterfall
- Month-over-month comparison
- Weekday vs weekend patterns
- Year-over-year trends
Advanced Analytics:
- Sankey cash flow diagram
- Transaction distribution histograms
- Multi-dimensional bubble charts
- Radar charts (monthly profiles)
- Anomaly detection
- Savings rate gauge
- Spending forecast
# List all available plot types
python analyze.py --list-plots
# Generate specific plot
python analyze.py --year --plot monthly_cash_flow
# Generate report for specific file
python analyze.py --file 2024.xlsx --report
# Generate plots with date filter
python analyze.py --year --all --date-range 2025-01-01 2025-06-30
# Quick summary
python analyze.py --month --quick-summary- pandas - Data manipulation
- openpyxl - Excel file handling
- PyYAML - Configuration management
- tkcalendar - Calendar widget
- numpy - Numerical operations
- sympy - Symbolic mathematics (for loan calculator)
- tkinter - GUI framework (included with Python)
- plotly - Interactive visualizations
- streamlit - Interactive dashboard
- seaborn - Statistical plotting
- scikit-learn - Forecasting and analytics
- kaleido - Static image export
This project is for personal use.
Justin Schubeck
- Email: jschubeck7@gmail.com
- LinkedIn: justinschubeck
- Project: github.com/justinschubeck/finance-tools
Majority Claude Code