~/nabeel
Back to projects

Jan 2024 — Apr 2024

Expense Tracker

A full-stack expense tracking platform with real-time graphical insights, categorized reporting, and optimized raw SQL behind the scenes.

Private project — no public repo or demo yet.
Expense Tracker preview

Problem & context

Tracking day-to-day spending across categories is tedious enough that most people abandon it after a few days — the tooling needed to show visible insight quickly enough to be worth keeping up.

A full-stack personal finance project built to explore authentication, state management, and query optimization in a Flask + MySQL app end to end.

Constraints

  • User data needed to be properly authenticated and isolated per account
  • Reporting views needed to stay fast as transaction history grew
  • Kept the frontend framework-free (HTML/CSS/JS) to focus on the backend

Trade-offs

  • Wrote raw SQL for CRUD operations instead of an ORM, trading some development speed for tighter control over query performance.
  • Chose server-rendered pages over a SPA framework, which was simpler to secure and reason about for an app of this size.

How it fits together

A Flask backend handles authentication and exposes categorized transaction data to server-rendered views, with MySQL as the data store and hand-written SQL for the CRUD paths that needed to stay fast as history grew.

Screenshots

Add screenshots of the dashboard and reporting views here.

Results

  • Real-time graphical insights and categorized spending reports
  • Robust authentication and per-user state management
  • Reduced query latency through optimized raw SQL CRUD operations

Lessons learned

Optimizing the SQL directly — indexing the right columns, avoiding unnecessary joins — made a bigger difference to perceived speed than any frontend change would have.

Talk about a similar project