Ledger
A minimal invoicing tool built for freelancers who bill by the hour. Time tracking, PDF invoices, and a dashboard that reconciles unpaid work in seconds.
- Year
- 2025
- Role
- Design & full-stack development
- Stack
- SvelteKit, PostgreSQL, Stripe, Tailwind CSS
The problem
Most invoicing tools are built for accountants, not for the person doing the work. Freelancers end up maintaining a spreadsheet on the side just to remember what they’re owed. Ledger started as that spreadsheet, rebuilt as a proper tool.
What I built
A single-page dashboard that tracks time against clients and projects, generates PDF invoices from that data with zero re-entry, and reconciles payments through Stripe webhooks. The interface deliberately avoids the “enterprise SaaS” template — flat lists, keyboard shortcuts for every action, no modal stacked on modal.
Details that mattered
- Invoice PDFs are generated server-side from the same typographic system as the web app, so the paper trail looks like it belongs to the product.
- Time entries round to the client’s billing increment automatically, with a manual override that’s always one click away.
- The whole thing runs on a single small Postgres instance — no queue, no cache layer, no premature infrastructure for a tool with a few thousand rows per user.
Outcome
Reduced the time from “job finished” to “invoice sent” from roughly twenty minutes of manual formatting to under a minute.
Next project
Studio Index