Case study · Own business system
Client portal & billing
The system I use to manage my own client work. It gives each client a private place to review proposals and send messages, with enquiry management, time tracking and billing on my side.
From an enquiry to an approved proposal and invoice.
A project involves more than delivering files. Proposals need decisions, questions need answers, time needs reviewing and invoices need issuing. I built a system that connects those steps while keeping each client’s information separate.
- 01Enquiry & proposal
- 02Selections, messages & approved time
- 03Reviewed invoice
What I built
Proposals people can respond to
Clients review a proposal, mark individual options yes, maybe or no, and leave notes. Their selections are saved so there is a clear record of the discussion.
Private conversations
Each client has a password-protected area for their proposals and messages. My admin view brings the client work together without exposing one client’s material to another.
Enquiries into the workflow
The website form and enquiry assistant feed the admin view. The assistant prepares an enquiry for a visitor to check before choosing to send it.
Time tracking into billing
Approved time and hosting charges can produce draft invoices. Invoices are reviewed before numbering, with paid and void states and client access to issued documents.
What this delivers
This is the working system behind my own client process. A client can respond to a proposal and message me in one place, while I can review the associated time and billing without rebuilding the record in a separate document.
The technical side
The main components and the decisions behind them.
- Platform
- Cloudflare Pages Functions provide server endpoints; D1 stores client data, messages, time and billing records.
- Authentication
- Salted password hashing, signed HttpOnly session cookies and login rate limiting protect client access.
- Data handling
- Server-side access checks separate clients. Save history is retained, and time-state updates detect conflicting edits rather than silently overwriting them.
- Billing
- Invoice numbering and frozen issued details preserve the issued record. Draft generation is designed to avoid duplicating a billing period.
What could this look like for your business?
If your business needs customers to approve work, view documents, send messages or access invoices, I can build a portal around your process. Staff and customers can have different views of the same job.
We can start with a conversation.
You don't need a technical brief. Tell me what you want to make easier, who will use it and what you use now. I'll help work out what needs building.
Talk to me about your idea