A comprehensive personal finance application that connects to your bank accounts through the Teller API, categorizes transactions, visualizes spending patterns, and helps you manage your budget effectively.
- Bank Integration: Secure connection to financial institutions via Teller API
- Transaction Management: View, search, and categorize your transactions
- Automated Categorization: Define rules to automatically categorize transactions based on description patterns
- Data Visualization: Charts and graphs to visualize spending patterns
- Category Management: Create and customize transaction categories with color coding
- Google Sheets Export: Export transactions for additional analysis or record-keeping
- Responsive Design: Works on desktop and mobile devices
- Multi-bank Support: Connect and manage multiple bank accounts in one place
The application consists of two main components:
- Backend: FastAPI application that handles API requests, Teller integration, and data processing
- Frontend: Vue.js application with a responsive UI for managing your finances
- Python 3.8+ (for backend)
- Node.js 16+ (for frontend)
- A Teller API account with application ID (Sign up here)
- For production: Teller API certificates
- Optional: Google Cloud Platform account with Sheets API enabled (for Google Sheets export)
git clone https://github.com/shirgoldbird/personal_budget.git
cd personal_budgetcd backend
python -m venv venv
# On Windows
venv\Scripts\activate
# On macOS/Linux
source venv/bin/activatepip install -r requirements.txtpython setup.pyThis will create the required directories and copy example files to their proper locations.
Edit the .env file in the backend directory:
# Teller API Configuration
TELLER_BASE_URL=https://api.teller.io
TELLER_CERT_PATH=path/to/cert.pem
TELLER_KEY_PATH=path/to/key.pem
# Google Sheets Configuration (Optional)
GOOGLE_SHEET_ID=your_sheet_id_here
GOOGLE_CREDS_PATH=path/to/google_credentials.json
# App Configuration
PORT=8000
DEBUG=False
# File paths
CATEGORIES_FILE=categories.json
TRANSACTION_MAPPING_FILE=transaction_mappings.json
CREDS_DIR=creds
STATIC_DIR=static
HTML_TEMPLATE_DIR=templates
If you want to use the Google Sheets export feature:
- Create a Google Cloud Platform project
- Enable the Google Sheets API
- Create a service account and download the credentials JSON file
- Create a Google Sheet and share it with the service account email
- Run the setup script:
python setup_google_sheet.py --creds path/to/credentials.json --sheet-name "My Budget Tracker"cd frontend
npm installCreate a .env file in the frontend directory:
VITE_API_URL=http://localhost:8000/api
VITE_TELLER_APP_ID=your_teller_app_id
VITE_TELLER_ENVIRONMENT=sandbox # or development, production
# From the backend directory
# Development mode with auto-reload
uvicorn app:app --reload --host 0.0.0.0 --port 8000
# Or directly
python app.py# From the frontend directory
npm run devThe frontend will be available at http://localhost:5173 by default.
- Open your browser and navigate to the frontend URL
- Click "Connect Bank Account" on the dashboard to launch Teller Connect
- Follow the prompts to connect your bank account
- After connecting, you'll see your accounts and transactions
- Use the categories page to set up custom categories
- Set up auto-categorization rules for recurring transactions
- View your spending breakdown on the dashboard
- Export transactions to Google Sheets if needed
FastAPI automatically generates interactive API documentation:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Edit
tailwind.config.jsto customize the theme colors - Modify components in
src/componentsto adjust the UI - Add new pages by creating Vue components in
src/viewsand updating the router
A Dockerfile is not included in this version, but for containerization, you would:
- Create a Dockerfile in the backend directory
- Build the Docker image
- Run with proper volume mounts for persistent storage
The backend can be deployed to:
- Heroku
- DigitalOcean App Platform
- AWS Elastic Beanstalk
- Google Cloud Run
- or any other Python application hosting service
Build the frontend for production:
cd frontend
npm run buildThe built files will be in the dist directory and can be served using any static file server.
Popular hosting options for the frontend include:
- Netlify
- Vercel
- GitHub Pages
- Firebase Hosting
- AWS S3 + CloudFront
- The Teller client certificate is sensitive and should be kept secure
- Google API credentials should be protected
- Environment variables should never be committed to version control
- Always use HTTPS in production
- Consider adding user authentication for multi-user environments
For testing, you can use Teller's sandbox environment:
- Set
VITE_TELLER_ENVIRONMENT=sandboxin your frontend.envfile - Use the following credentials in Teller Connect:
- Username:
verify.microdepositor any other Teller sandbox username - Password:
password
- Username:
For production:
- Set
VITE_TELLER_ENVIRONMENT=productionin your frontend.env - Ensure you have valid Teller API certificates
- Update the backend
.envfile with your certificate paths
MIT
This application is for personal use only. Always be careful with financial data and credentials.