Wooble
Back to Malhar's profile
Verified on Wooble

TrackIt

Track every rupee, right from your terminal.

Malhar Prasad RayTrackIt

Overview

College students in India — especially those living in hostels or PGs in cities like Bhubaneswar, Pune, and Bangalore — make 25–45 small transactions every week. UPI payments at the canteen, ₹49 data recharges, ₹230 bus pass top-ups, late-night Swiggy orders. It all adds up. Most of them have no idea where ₹3,000–₹5,000 of their monthly allowance actually went. The gap is specific: a student with a ₹4,000 monthly budget, using a laptop for college work, who needs to log and review expenses in under 30 seconds. No sign-up. No sync. No internet. That's the exact gap TrackIT fills. Process The starting point I didn't open a code editor first. I wrote down one question: what does a college student actually need to track expenses? Not a dashboard. Not graphs. Choosing the data structure My first instinct was to create an Expense class with attributes — date, amount, category, note. I drafted it. It took 15 lines just for the constructor and __repr__. Then I tried to sum amounts across a list of those objects and realised I was writing boilerplate to solve a problem that didn't exist at this scale. The UI that didn't work The first version used argparse — the standard Python way to build CLI tools. It worked technically. Results A fully working single-file Python CLI tool — expense_tracker.py — that runs on any Python 3.9+ install with zero setup, zero dependencies, and zero internet required. Add expenses with date, amount, category, and note See total amount spent across all entries Category breakdown with a text bar chart and highest-spend highlight Monthly budget setting with live warnings at 80% usage and on breach 3 pre-loaded sample expenses so output is visible immediately. Pure standard library — no pip install, no venv, no requirements.txt Runs in under 1 second on any machine Input validation on every way Reflection Start with JSON persistence from day one I built in-memory storage first and flagged JSON as a future improvement. In hindsight, json.load() and json.dump() are two lines — I should have just added them. A tracker that loses all data on exit is not actually useful to anyone. Add an edit and delete feature earlier I shipped add and view but no way to fix a mistake. If you type ₹1200 instead of ₹120, you're stuck with it. That's a basic gap I noticed after finishing and didn't have time to go back and fix.

Links & files

Artifacts

2

Gallery

6