Wooble
Back to Aditya's profile
Verified on Wooble

Student-expense-tracker

Built a lightweight, zero-dependency CLI expense tracker that streamlines student budget management with automated category insights and real-time spending aler

Aditya RajStudent-expense-tracker

<100

Lines of code

<1ms

Action latency

100%

In-memory storage

Overview

College students often lose track of daily micro-transactions like canteen food, recharges, and travel. Existing finance tools require internet or bloated mobile apps. The challenge is to engineer a pure Python, zero-dependency command-line interface (CLI) that functions entirely offline. It must allow students to log categorized expenses, view formatted records, calculate total spending, and automatically identify their highest-spending category. As a bonus, the system needs to support customizable monthly budgets that proactively warn users before they overspend. Process My goal was to build a lightweight, zero-dependency tool. I chose pure Python without external libraries (like Pandas or DBs) to ensure it runs instantly on any machine. I utilized a global list of dictionaries for in-memory storage, keeping the architecture simple and O(1) for appending data. During development, my initial iteration used standard print statements, but the terminal output looked messy. I iterated by implementing Python f-strings with padding (e.g., :<12) to create a perfectly aligned, pseudo-GUI table. A major issue I encountered was a UnicodeEncodeError on Windows terminals when printing the Rupee symbol (₹). I initially considered swapping it to "Rs.", but that felt like a compromise. Instead, I forced sys.stdout.reconfigure(encoding='utf-8') at the script's start, fix Results The program achieved a 100% task success rate during testing, successfully executing all 5 core features without throwing any errors on both Windows and Unix systems. By relying strictly on the Python standard library, the application maintains a 0KB external dependency footprint, resulting in near-instantaneous load times (<1ms) and zero setup friction for students. The implemented ANSI escape codes successfully drew immediate attention to the budget warnings, drastically improving the usability and visual hierarchy of a purely text-based CLI interface. Reflection If I were to rebuild this, the first major change would be implementing persistent data storage. Currently, expenses are stored in-memory and lost upon exit. I would integrate an SQLite database or a simple JSON file exporter to ensure students' data persists across sessions. Additionally, while the CLI is highly efficient, a terminal interface can be intimidating for non-technical users. I would consider migrating the core Python logic to a lightweight web framework like Flask or wrapping it in a simple GUI to drastically improve accessibility and daily adoption rates.

Links & files

Artifacts

1

Gallery

1