Spend Smart, Slay Hard!💅
An AI-powered budgeting app that helps you track income, manage expenses, visualize spending patterns, and get personalized financial advice from Google Gemini AI.
Live App: http://138.68.251.91:5000/
- Athena Luo – funfig_16 – Backend Dev & Frontend UX Design & Database
- Avi Herman – AviH7531 – Backend Dev & Frontend UI Design & System Building & Database
- Ezra Shapiro – ems9856-lgtm – System Building & Data Visualization
- Mya Pyke – myapyke123 – AI and API Incorporation
- Tawhid Zaman – TawhidZGit – Front End Design & AI Incorporation
- Python 3.11+
- MongoDB 7.x
- Git
- Clone the repository
git clone https://github.com/swe-students-fall2025/5-final-budgetbaddie.git
cd 5-final-budgetbaddie- Install MongoDB
macOS:
brew tap mongodb/brew
brew install mongodb-community@7.0
brew services start mongodb-community@7.0Ubuntu/Debian:
sudo apt-get install -y mongodb-org
sudo systemctl start mongodWindows: Download from mongodb.com/try/download/community
- Set up Python environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt- Configure environment variables
Copy the example file and edit it:
cp .env.example .envEdit .env with your values:
MONGO_URI=mongodb://localhost:27017
SECRET_KEY=your-generated-secret-key
GEMINI_API_KEY=your-gemini-api-keyGenerate a secret key:
python -c "import secrets; print(secrets.token_hex(32))"Get a Gemini API key: Visit Google AI Studio
- Run the application
python app.pyVisit http://localhost:5000 in your browser.
cd api
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000| Variable | Required | Description |
|---|---|---|
MONGO_URI |
Yes | MongoDB connection string |
SECRET_KEY |
Yes | Flask session encryption key |
GEMINI_API_KEY |
Yes | Google Gemini AI API key |
MAIL_SERVER |
No | SMTP server (for password reset) |
MAIL_USERNAME |
No | Email account |
MAIL_PASSWORD |
No | Email password |
See .env.example for a complete template.
- Web App: avih7531/budgetbaddie-web
- API Service: avih7531/budgetbaddie-api
The app is deployed to Digital Ocean and accessible at http://138.68.251.91:5000/
Pushing to the main branch automatically triggers CI/CD workflows that:
- Run tests with 80% coverage requirement
- Build Docker images
- Push to Docker Hub
- Deploy to Digital Ocean
The following secrets are configured in the repository:
DOCKER_USERNAME- Docker Hub usernameDOCKER_PASSWORD- Docker Hub passwordDO_HOST- Digital Ocean droplet IP (138.68.251.91)DO_USERNAME- SSH username for deploymentDO_SSH_KEY- SSH private keyMONGO_URI- Production MongoDB connection stringSECRET_KEY- Production Flask secret keyGOOGLE_AI_API_KEY- Gemini AI API key
pip install pytest pytest-cov
pytest --cov=. --cov-report=term-missingFor the API service:
cd api
pytest tests/ --cov=app --cov-report=term-missing -v- Frontend: HTML/CSS/JavaScript, Chart.js
- Backend: Flask (web), FastAPI (API)
- Database: MongoDB 7
- AI: Google Gemini AI
- Deployment: Docker, GitHub Actions, Digital Ocean
- Monthly budget planning with category breakdown
- Income and expense tracking
- Interactive data visualizations (pie charts, progress bars, capacity tracker)
- AI-powered spending advice via chat interface
- Savings calculator
- Budget locking to prevent overspending
- Mobile-responsive design
MIT License