Freelancer Invoice System
A freelance graphic designer is tired of making invoices in Google Docs. She has 15 recurring clients. She wants to create invoices, track which ones are paid, send reminders for overdue ones, and see how much money she's owed at a glance.
Build a full invoicing system. This is real software that real freelancers pay for (FreshBooks, Wave, Invoice Ninja). You'll deal with financial calculations, PDF generation, status workflows, and dashboard analytics.
What to Build
- Client management: name, email, company, address, phone. Full CRUD.
- Invoice builder: select a client, add line items (description, quantity, unit price), tax rate, discount, notes. Auto-calculate subtotal, tax, total.
- Invoice statuses with a workflow: Draft → Sent → Viewed → Paid → Overdue. Status changes logged with timestamps.
- Auto-incrementing invoice numbers (INV-001, INV-002), configurable prefix
- Recurring invoices: mark as recurring (weekly/monthly), auto-generate new drafts
- Dashboard: revenue this month/quarter/year, outstanding amount, overdue amount, invoices by status, revenue over time chart
- PDF generation: generate a clean PDF of any invoice server-side (pdfkit or puppeteer)
- Due date tracking: invoices auto-become "overdue" after the due date
- Payment recording: mark paid with date and payment method
Phases
Decisions You'll Make
How to handle money (floating point is dangerous — store cents as integers?). How to build the dynamic line item form (add/remove rows, recalculate live). How to implement the status workflow (what transitions are valid? can Paid go back to Draft?). How to generate PDFs server-side. How to build aggregation queries for revenue by month grouped by status.