This project contains a simple Streamlit web application for tracking personal finances.
It lets you manage accounts and transactions, upload PDF statements and view a summary dashboard.
The app stores data in Supabase and uses Microsoft OAuth for authentication.
PDF extraction is powered by Google's Generative AI model.
Install the dependencies listed in requirements.txt:
pip install -r requirements.txtCreate a .env file and set the required environment variables:
CLIENT_ID,TENANT_ID,CLIENT_SECRET– Azure AD credentialsSUPABASE_URL,SUPABASE_KEY– Supabase connection infoGOOGLE_API_KEY,GOOGLE_PROJECT_ID,GEMINI_MODEL– configuration for the PDF extractor
Launch the development server with Streamlit:
streamlit run app.pyA Dockerfile is included for containerized execution.
.
├── app.py # Main Streamlit entry point
├── auth.py # Microsoft OAuth helpers
├── database.py # Supabase CRUD operations
├── dashboard.py # Dashboard UI helpers
├── extractor.py # PDF parsing and AI logic
├── utils.py # Misc utilities
├── components/ # Reusable Streamlit widgets
│ ├── auth_widgets.py
│ ├── charts.py
│ └── sidebar.py
├── pages/ # Streamlit page modules
│ ├── 1_accounts.py
│ ├── 2_transactions.py
│ ├── 3_statements.py
│ └── 4_dashboard.py
├── requirements.txt # Python dependencies
├── Dockerfile # Container setup
└── test.py # Basic test harness
Run the simple tests with:
python test.py