jp·Málaga

Projects04

JPTracker

Time tracking and invoicing for my freelance work.

I needed to track my hours across clients and turn them into invoices without paying for another tool, so I built one. It's what I use for my freelance work.

What it does

  • A weekly calendar with tasks stored in UTC, drag and drop, and timers you can pause
  • Invoices that go from draft to final. An invoice only gets its number once it's finalized
  • Exports to PDF, CSV and PNG
  • Monthly reports, with a search for hours by client and Recharts dashboards
  • Sign-in with email and password, Google, Apple or a passkey (WebAuthn)
  • A one-time import from the older localStorage version of the app

Build notes

The client is React 19 and Vite. Supabase handles auth and Postgres, with row-level security on the data. PDFs are generated in the browser with jsPDF and html2canvas, so making an invoice doesn't need a server.

Time is stored in UTC and shown in whatever timezone you're in, so the hours always add up.

Status

It's live at jptimetracker.vercel.app and I use it for my own work.