All work

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