Pocket Ledger
A budgeting PWA with per-category monthly limits, 18-currency support, and a command palette — installable, themed, and fast enough to log an expense before you put your phone away.
Fig. 01 — Pocket Ledger interface

01 — Problem
Expense trackers die from friction. If logging a coffee takes six taps and two dropdowns, you stop logging coffees, and a ledger with gaps is worse than no ledger at all. Everything here was built against one constraint: entry has to be quicker than the excuse not to do it.
02 — Build
Keyboard-first, then touch-first
A Cmd+K command palette jumps to any route or starts a new entry without touching the mouse. On mobile that same surface becomes a sheet. The PWA installs to the home screen so it opens like an app instead of a tab.
Budgets you can read at a glance
Per-category monthly limits render as live progress bars with explicit under and over states. Colour is doing secondary work — the label and the number carry the meaning, so it still reads correctly in greyscale or with a colour-vision deficiency.
Multi-currency that respects local convention
18 currencies, each formatted the way its own region actually writes money — lakh grouping for INR and PKR, comma-decimals for EUR, RUB, and BRL — rather than bolting a different symbol onto one Western format. Sixteen preset categories cover entry without turning it into a taxonomy exercise.
Analytics, and an exit door
Recharts covers monthly trends and category breakdowns; one-click CSV export means the data is never hostage to the app. Auth.js handles Google and GitHub sign-in, with Prisma over Postgres underneath.
Fig. 02 — Pocket Ledger — additional view

03 — Decisions & tradeoffs
- Per-locale formatting over one Western default
- An Indian user reading ₹37,276.07 grouped in thousands knows immediately the app was not built for them. Regional grouping is a small amount of work that decides whether the numbers feel native.
- CSV export from day one
- A ledger people cannot get their data out of is a ledger they will not commit to. The exit door is what makes the app worth entering.
- PWA over a React Native build
- One codebase, instant updates, no store review. Gives up native widgets and background sync — neither of which this app needs.