I built ClientDesk because I wanted one place to track clients, invoices, and payments for freelance work, instead of juggling spreadsheets.
It is a Next.js + TypeScript app with a Postgres database. You can add clients, create invoices with line items, record partial payments, and see what each client still owes. Invoices export as a one-page PDF, and clients export as CSV. There is a dashboard with the totals that actually matter: paid, outstanding, and overdue.
A few things I paid attention to along the way:
- Auth with email/password is built, with password reset and Google/GitHub sign-in built but not switched on yet — they need credentials I haven't added.
- Security headers, rate limiting on sensitive routes, and an audit log so changes are traceable.
- Users can export all their own data and delete their own account.
It is a real working app, not a demo with fake data — the live version is linked below, and the code is on GitHub. If you try it and something breaks, tell me: that is the most useful feedback I can get.
Live demo: https://clientdesk-muhammadahmad67889s-projects.vercel.app/
Code: https://github.com/MuhammadAhmad67889/clientdesk

