A comprehensive budget tracking and reporting system that compares your planned budget against actual spending data from Simplifi exports.
- 📊 Budget vs Actual Analysis: Compare planned spending with actual expenses
- 📈 Interactive Visualizations: Charts and graphs powered by Plotly
- 📱 Web Interface: User-friendly Streamlit web application
- 📄 PDF Reports: Generate comprehensive budget reports
- 🏷️ Smart Category Matching: Automatically match actual expenses to budget categories
- 📅 Date Range Analysis: Analyze spending patterns over custom time periods
- 📊 Excel Export: Export analysis data to Excel for further processing
- Python 3.12+
- Conda (for environment management)
- Docker (optional, for containerized deployment)
-
Clone the repository
git clone <repository-url> cd budget-tracker
-
Create conda environment
conda env create -f environment.yml conda activate budget-tracker
-
Run the application
streamlit run app/web/streamlit_app.py
-
Build the container
docker build -t budget-tracker . -
Run the container
docker run -p 8501:8501 budget-tracker
Create a YAML file with your budget structure:
# Budget for 2025
income:
- source: Salary
amount: 5000
- source: Side Business
amount: 1000
expenses:
- category: Housing
amount: 1500
subcategories:
- category: Rent
amount: 1400
- category: Renter's Insurance
amount: INHERITED # Inherits from parent category
- category: Food
amount: 600Export your P&L data from Simplifi as XLSX format and upload it through the web interface.
- Upload Files: Use the sidebar to upload your budget YAML and Simplifi export
- Select Date Range: Choose the analysis period
- View Analysis: Explore the Overview, Charts, and Details tabs
- Generate Reports: Export PDF reports or Excel files
STREAMLIT_SERVER_PORT: Port for Streamlit server (default: 8501)STREAMLIT_SERVER_ADDRESS: Server address (default: 0.0.0.0)
Available themes:
- plotly_white (default)
- plotly_dark
- ggplot2
- seaborn
pytest tests/- Parser modules: Handle loading and parsing of budget and actual spending data
- Analysis modules: Perform budget vs actual analysis and variance calculations
- Output modules: Generate charts, reports, and exports
- Web module: Streamlit web interface
- Create appropriate module in the
app/directory - Add corresponding tests in
tests/ - Update the Streamlit interface if needed
- Update documentation
- Connect your GitHub repository to Streamlit Cloud
- Configure the app path:
app/web/streamlit_app.py - Set environment:
python = "3.12"
Use the included Dockerfile for containerized deployment to any platform that supports Docker containers.
Run directly with Streamlit on your own server:
streamlit run app/web/app_nav.py --server.port 8501 --server.address 0.0.0.0- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.