Expense Tracker
Overview
College students juggle UPI payments, canteen bills, recharges, and travel costs every day, but most have no idea where their money actually goes by month-end. Budgeting apps feel heavy, need internet, and collect personal data. I wanted a lightweight, offline, command-line tool that lets a student quickly log expenses, see totals, spot their biggest spending category, and get warned if they're going over budget — all without installing anything beyond Python. Process I started by listing the core jobs-to-be-done: add an expense, view expenses, see total spend, and find the top category. I sketched the data model first — a list of dictionaries with date, amount, and category — since it's simple, requires no database, and is easy to debug. Next, I built a menu-driven loop so the program feels interactive rather than a one-shot script. I added input validation early (invalid dates default to today, invalid numbers re-prompt, unknown categories fall back to "other") because real users make typos. For the bonus, I treated the budget as a separate piece of state that gets checked after every new expense, so feedback feels immediate. Finally, I pre-loaded three sample expenses so reviewers see working output instantly, and tested the full menu flow end-to-end Results The result is a single-file Python script that runs instantly with no setup. A student can log an expense in seconds, view a clean table of all entries, check their total spend, and immediately see which category (food, travel, recharge, or other) is draining their wallet most. The budget feature gives a real-time "Rs. X left" or "over budget by Rs. X" message after every entry, turning passive tracking into an active nudge toward better spending habits. Reflection If I extended this, I'd add persistent storage (CSV or JSON file) so data survives between sessions, since right now everything resets on exit. I'd also add a "view by date range" or "monthly summary" option, since students think in terms of "this month" rather than all-time totals. Using pandas for the category breakdown would make it easier to add visualizations (like a simple bar chart via matplotlib) later. Finally, I'd separate the logic into a module and write unit tests instead of relying on manual testing.