Client portal

A portal an agency, studio or consultancy shares with its clients. The agency runs projects, shares deliverables for review, swaps files and sends invoices; each client's people sign in and see only their own organisation's projects, files, invoices and messages, enforced in Postgres with organisation scope. Approvers sign off a deliverable or ask for changes, and every decision is kept with who made it and when. Workflows thread every review and share into the project's messages, email the client's contact, flag overdue invoices daily and send a weekly review summary.

Invite-only. The agency team runs projects and billing; client contacts see only their own organisation and approve work.

Client portal on desktopClient portal on a phone

What's inside

Client overview: projects, what's waiting for review and what's to pay. Project pages with deliverables, files, invoices and a message thread. Reviews: approve or ask for changes, with a kept record of every decision. Files shared both ways, invoices with payment links and overdue flags. Agency pages for clients, client contacts, client access and the studio team.

Tables

  • agency name, email, title, avatar
  • client name, email, job_title, phone, avatar
  • organisation name, website, industry, logo, billing_email, account_lead_id, primary_contact_id, status
  • membership organisation_id, client_id, access_level, status
  • project organisation_id, name, summary, status, start_on, due_on, budget, progress, …
  • deliverable project_id, organisation_id, title, description, file, link, version, revises_id, …
  • approval deliverable_id, organisation_id, client_id, decision, urgency, comment
  • message project_id, organisation_id, body, author_name, author_side
  • shared_file project_id, organisation_id, name, file, link, category, shared_by, note
  • invoice organisation_id, project_id, number, description, amount, currency, issued_on, due_on, …

Roles

  • agency Agency team, staff
  • client Client, staff

Pages

  • /overview Overview (client)
  • /projects Projects (agency, client)
  • /projects/:id Project (agency, client)
  • /deliverables Deliverables (agency, client)
  • /deliverables/:id Deliverable (agency, client)
  • /reviews Reviews (agency, client)
  • /files Files (agency, client)
  • /invoices Invoices (agency, client)
  • /clients Clients (agency)
  • /clients/:id Client (agency)
  • /contacts Client contacts (agency)
  • /access Client access (agency)
  • and 2 more

Rules on every write

  • project Progress is a percentage
  • deliverable This must belong to the project's client
  • deliverable The client reviews deliverables
  • approval This review can't be recorded
  • message This must belong to the project's client
  • shared_file This must belong to the project's client
  • shared_file Attach a file or paste a link
  • invoice This must belong to the project's client
  • invoice Check the invoice

How its workflows run

Each one is a server workflow in your project: it runs on its trigger, with retries, and its runs show in the builder's log.

  1. Stamp a message and tell the other side

    When a row changes: message created. Then: Look up project, then Update message, then Notify, then Send email.

  2. Ask the client to review a new deliverable

    When a row changes: deliverable created. Then: Look up project, then Update deliverable, then Create message.

  3. Apply a client's review

    When a row changes: approval created. Then: Look up deliverable, then Update approval, then Create message.

  4. Stamp a shared file

    When a row changes: shared_file created. Then: Look up project, then Notify, then Update shared_file.

  5. Email a new invoice to the client

    When a row changes: invoice created. Then: Send email.

  6. Flag overdue invoices and remind

    On a schedule: schedule daily 09:00 over invoice. Then: Look up invoice, then Update invoice, then Send email, then Notify.

  7. Thank the client when an invoice is paid

    When a row changes: invoice updated, when status is paid. Then: Update invoice, then Send email.

  8. Weekly review summary for the studio

    On a schedule: schedule weekly fri 16:00 over approval. Then: Send email.

Set it up

It starts a new project, with its data, roles and sign-in ready.

  1. Start the project

    Use the button above, or ask your coding agent with the Appbricx MCP server connected (quickstart).

  2. Sign in as each role

    The demo logins open each role's home. Change what you like in plain words or in the contract.

  3. Deploy

    When dev looks right, deploy. Production gets a snapshot first, so you can roll back.

Use it with your coding agent

The agent creates the project, builds it and signs in as each role.

Prompt
Start a new Appbricx project from the Client portal template (slug "client-portal") with use_template. Call it "My Client portal", then sign in as each role, verify it and tell me what to change first.
MCP call
{
  "tool": "use_template",
  "arguments": {
    "slug": "client-portal",
    "name": "My Client portal"
  }
}
CLI
appbricx templates use client-portal --name "My Client portal"

Make it yours in plain words.