Work / Research · Education / Personal Finance Tracker

Notebook · CS50P · welfare

Money in.
Money out.
What's left.

A small Python program that does what a pocket notebook does, only with arithmetic that never lies. Records what you earned. Records what you spent. Tells you what is left. No internet. No login. Your data stays on your computer.

Built by Lakshika · Under dmj.one
51 ✓Tests passing
3.10+Python supported
0Bytes leave your computer
8Menu options · 1-8
MITFree to use, forever

Act I · The Problem

A first salary, and nowhere honest to write it down.

The bank app shows the balance. It does not show why it is shrinking. The fancy budgeting app wants a login, an internet connection, and a permission to read your messages. The ledger you actually need is two columns, on your machine, with arithmetic you can trust.

Act II · The Promise

Two columns.
One running balance.

Type a number. Pick a category. Hit enter. The total updates. That is the whole product. The same shape your grandparent would draw on the back of a chequebook, only this one adds up correctly every single time.

Date Category In Out Balance
04 Apr 2026 Salary ₹ 50,000.00 · ₹ 50,000.00
05 Apr 2026 Rent · ₹ 18,000.00 ₹ 32,000.00
07 Apr 2026 Food · ₹ 2,450.00 ₹ 29,550.00
11 Apr 2026 Freelance ₹ 8,500.00 · ₹ 38,050.00
15 Apr 2026 Transport · ₹ 1,200.00 ₹ 36,850.00
Total ₹ 58,500.00 ₹ 21,650.00 ₹ 36,850.00

Act III · The Buckets

Five ways money comes in.
Nine ways it goes out.

No more, no fewer. Categories you can pick by typing a single digit. The point is to record, not to file taxes.

In · the money you receive

  • +Salary
  • +Freelance
  • +Investment
  • +Gift
  • +Other Income

Out · the money you spend

  • -Food
  • -Transport
  • -Utilities
  • -Entertainment
  • -Shopping
  • -Healthcare
  • -Education
  • -Rent
  • -Other Expense

Act IV · Proof

The arithmetic does not lie.

Every core function has tests. Adding a transaction, calculating the balance, filtering by category, generating the summary, validating the amount, validating the date. Run them in the terminal. They go green.

pytest test_project.py -v

51 ✓
passing.

Built as a Harvard CS50P final project. The test count is the receipt: every function is covered, in writing.

What the tests actually check

A transaction is added with the right amount, date and category.

The balance equals total income minus total expenses, every time.

Filtering by category returns only the matching rows.

Bad amounts and bad dates are rejected before they corrupt the file.

The summary includes largest income, largest expense, and a breakdown.

The Stack

A small program. Honestly built.

  • Python 3.10+
  • tabulate
  • pytest · 51 tests
  • finances.json (local)
  • stdlib datetime
  • Terminal UI
  • No internet
  • MIT

Honest software does not need a login screen. It just needs to add up.

This is what the dmj.one welfare initiative looks like in practice: a first-year student ships a real, tested, offline-first program, free for anyone to use. We can build that level of care for you next.