Expense Tracker
The problem
Keeping track of spending across categories, recurring payments and more than one currency is tedious in a spreadsheet. I built a full-stack app to record expenses and see where the money goes.
Key decisions
- Separated a Django REST Framework API from a React client, with JWT authentication between them.
- Stored each expense in its original currency, plus a per-user preferred currency for conversion in reports.
- Kept monthly totals per category in their own analytics table, updated as expenses change, so the dashboard doesn't recalculate from every expense.
- Made categories unique per user with a database constraint rather than relying on application checks.
- Refactored the dashboard into smaller components and custom hooks as it grew, which also fixed a useEffect loop that was causing infinite API calls.
The result
A deployed app with secure accounts, recurring expenses, multi-currency tracking, spending charts and CSV export.