Try it!
Visit the Web VersionVisit the GitHub Repo
Description
Challenges: Architecting a clean frontend/backend split in Streamlit was the main design hurdle. I built separate repos for the UI layer and the data layer so that the backend could be reused independently of the Streamlit interface. Deploying to Streamlit Cloud also required careful dependency management.
Result: A deployed, fully functional multi-mode finance tracker with a CLI and a Streamlit web dashboard — six pages covering expenses, income, subscriptions, and tax estimates. Started as a school submission; evolved into a production-ready app.
How the App is Structured
In Action
Dev Notes
Problems Solved
Most finance apps are overkill or locked behind subscriptions. I needed a single tool that tracked expenses, income, subscriptions, and estimated taxes — and that I'd actually use daily without paying a monthly fee.
Errors & Fixes
Streamlit Cloud deployment failed because transitive dependencies weren't pinned — fixed by running pip freeze and committing every version to requirements.txt. Backend API calls from the frontend triggered CORS errors until I added explicit response headers to all endpoints.
What I Learned
How to architect a clean Streamlit frontend/backend split so the data layer can be reused outside the UI. Streamlit Cloud's build pipeline, the importance of dependency pinning in production, and how multi-page Streamlit apps are structured.
What to Inspect Next
Back to top