Client Portal
v0.1.1
Open live demo → Screens
Overview
Two shells over one set of records. The studio works in it all day — write a proposal, send it, and watch a project appear the moment the client accepts — while the client gets a minimal centered portal, no sidebar and no view of anyone else’s work, reached with nothing but an email address and a document number, to read the scope, approve a deliverable and settle an invoice. The manifest scaffolds the client, proposal, project and invoicing tables into your connected database and generates the record-keeping around them: the portal is the front of house, the dashboard is the office.
Capabilities
- Payments
- File storage
- Email receipts
What you get
Tables it adds9
- clients
- proposals
- proposal_items
- projects
- milestones
- deliverables
- invoices
- invoice_items
- payments
Created fresh, or mapped onto your existing tables at install.
Pages your dashboard gains5
- Studio dashboardOutstanding, overdue and active projects, with an aging list and recent payments.
- ClientsA searchable directory, each client opening onto one timeline of their proposals, invoices and projects.
- ProposalsA CRUD grid with status chips, and the priced lines under each proposal.
- InvoicesEvery invoice with its lines and the payments recorded against it.
- ProjectsA board of active, paused and finished work, with milestones and deliverables on each card.
Roles it pre-builds1
- studio-ownerRead and write every client, proposal, project, deliverable and invoice; payments can be recorded and corrected but never deleted, and settings and roles stay out of reach.
Settings you configure6
- Studio name
- Invoice number prefix
- Default tax rate
- Payment terms (days)
- Currency
- Reply-to address
Run it with your own data
Client Portal needs somewhere to keep your data. Answer one question and we will show you the shortest way there.
Do you already use Adminium?
Set everything up together
A static host can only serve the screens. Your data needs a database, and Adminium is what turns it into an admin you can use — so the three go up together.
Deploy everything to DigitalOceanPostgres, Adminium and Client Portal, already connected.
Rather try it on your own machine first?
npx @adminiumjs/adminium No database needed — it asks you for one when it is ready. Then come back here and pick “Yes” above.
Where is your Adminium?
The address you sign in to, for example https://admin.yourcompany.com
That does not look like a web address. It should start with https://
Where should Client Portal live?
Inside Adminium
One place to sign in, and nothing else to deploy. Your team reaches it from the same address as your admin.
Show me how
- Build it:
git clone https://github.com/Adminiumjs/client-portal.git && cd client-portal && npm install && npm run build:surface - Point Adminium at it and restart:
ADMINIUM_SURFACES_DIR=$(pwd)/dist-surface npx @adminiumjs/adminium start - Then open:
https://admin.example.com/apps/clients/staff/
On its own domain
A separate site with its own URL, talking back to the Adminium you just named.
Vercel hosts the screens only — your Adminium stays where it is and keeps the data. You will paste one key that lets the site read it.
Deploy to VercelVercel will ask for two values. Both are on your Adminium under Studio → Public API.
Or start from the source
Clone it and run it anywhere — the README covers every option.
View on GitHubJust looking? The live demo needs no setup at all and nothing you do in it is saved. Open the live demo