The expense tracker that keeps a ledger — and an opinion.
LedgerLite is a multi-user expense tracker with real authentication, category breakdowns, and CSV export. Add what you spend, set a budget per category, and get a straight answer about whether you kept it. Most trackers stop at the chart — LedgerLite adds the verdict.
Every month, LedgerLite roasts you.
At the end of each month, LedgerLite looks at your category breakdown — not a canned tip, an actual read on your numbers — and generates a one-liner verdict. It's procedural, not templated filler: the line changes based on which categories are out of proportion, which ones are at zero, and how far over cap you went.
“You spent 3x more on food than rent. Priorities?”
Food vs. Rent“₹0 on savings, ₹4,200 on subscriptions — bold strategy.”
Savings vs. Subscriptions“Entertainment ate 41% of your budget this month. The popcorn wasn't that good.”
Entertainment sharePer-category budget caps
Set a monthly cap on any category. Cross it, and the dashboard doesn't wait for a report at month end — the row turns red immediately, with the exact overage amount displayed next to it, so you always know precisely how far you went over and on what.
Data-driven, not decorative
The roast generator runs entirely off your own ledger: category ratios, zero-spend categories, and cap overages feed a set of rules that pick the sharpest true statement about your month — no LLM, no fluff, just your numbers talking back.
What you actually see.
A category-by-category breakdown with caps, overage badges, and the roast of the month sitting right at the top.
“₹9,640 on food, ₹0 in savings. The fridge is fine. The future isn't.”
Built with
Run it locally
LedgerLite runs on Flask with PostgreSQL as the primary datastore. A SQLite fallback is available for local development if you don't want to stand up Postgres right away.
pip install -r requirements.txt # PostgreSQL (recommended for full functionality) export DATABASE_URL=postgresql://user:pass@localhost:5432/ledgerlite # — or, for local dev without Postgres — # omit DATABASE_URL to fall back to a local SQLite file flask run # → http://localhost:5000
The app is built around Flask-SQLAlchemy against PostgreSQL, configured via the DATABASE_URL environment variable.
Skip the Postgres setup while hacking locally — LedgerLite falls back to SQLite so you can register, log in, and add expenses immediately.