← All work
Case study · Client portal

MasterDash

A practice management dashboard for an HR, OD and L&D specialist. Projects, clients, documents, surveys, forms, quotes and invoices in one place, with a private portal for every client.

Role
Design, architecture, development
Built on
WordPress plugin, REST API
Users
5 roles, owner to client team
Status
v2.0, at masterdash.co.za
masterdash.co.za / overview
MasterDash owner overview with recent activity

Shelley McMaster has spent 35 years in organisational development, HR and learning. Her work is high trust: culture surveys, leadership programmes, policies that change how companies run.

The admin behind it was scattered. Proposals lived in Word, surveys in one tool, forms in another, invoices in a spreadsheet, and every client update meant another email thread. Clients never had one place to see where their project stood.

The brief: give the practice one dashboard, and give every client a portal that feels like it was built for them.

We built it as a duo. Shelley brought the practice and the process. I designed every screen and built the platform underneath.

The problem

What was slowing the practice down.

Scattered tools

Six tools for one client journey, and none of them talked to each other.

No client view

Clients asked for status by email because they had nowhere to look.

Chasing admin

Signatures, forms and payments were followed up by hand, one reminder at a time.

The design

One app, a different dashboard for each role.

The owner sees the whole practice. A client sees only their projects, their documents and their tasks. Every screen was designed and approved in a clickable prototype before it was built.

Edit on the page

The document builder edits the document itself, with locked template styles, so every proposal stays on brand.

Tasks drive everything

Sending a form, a quote or an invoice creates the client's task. Finishing it creates the next one for the owner.

Invisible WordPress

Branded sign-in, emails and PIN screens. Clients never see a WordPress logo.

The engine

Built for large workspaces and strict privacy.

The screens are a single-page app compiled from the approved prototype. Everything behind them is a custom WordPress plugin with its own tables and its own API.

  • Nothing is hidden only in the browser. The server decides what each role can read or change
  • Other clients get a 404, tested with probes on every release
  • Invoice totals, numbers and statuses are set by the server, never the browser
  • Private files sit outside the public uploads with random 128-bit names
ScreensPrototype compiled into one app: owner, team, client and client team views
APImasterdash/v1 REST routes, rate limited, with a change counter so unchanged refreshes return in 1 ms
RulesRoles, 6-digit PINs, invitations and per-client filtering in SQL
DataIndexed custom tables for items, versions, comments, activity and survey responses
JobsWP-Cron sweeps for due and overdue invoice reminders
BaseAny WordPress host, installable as a PWA
What I built

The full client journey, one release at a time.

Onboarding

  • Invite wizard with forms, documents and agreement
  • Password, PIN and welcome flow
  • Guided onboarding checklist

Documents

  • Inline document builder with versions
  • Comments, team-only notes and approvals
  • Private document uploads and requests

Surveys and forms

  • Survey builder with client approval
  • Anonymous results after 5 responses
  • Form bank with smart client fields

Quotes

  • Phased quotes with hour ranges
  • Accept by signed name online
  • Invoice per milestone

Invoicing

  • Due and overdue reminders as tasks
  • Partial payments and proof of payment
  • Credit notes and PDF downloads

Client portal

  • My tasks, documents, forms and invoices
  • Survey results and PDF reports
  • Profile, company and team
Results

Fast at scale, tested on every release.

1.1mrows across 500 workspaces in the load test
98 msdashboard on the server with 25,000 records in one workspace
1 msrefresh when nothing has changed
13end-to-end test suites plus security probes

Got a spreadsheet your team hates?

Send me a WhatsApp with what your team does every day and where it breaks. I'll tell you honestly whether a dashboard fixes it, and what it would take.

WhatsApp me now

Opens a WhatsApp chat with Steph

© 2026 Steph · WordPress & WooCommerce developer · Johannesburg, South AfricaDesigned and built by hand