Boom Media
Boom Labs · Product Builds

bm-portal — admin & client dashboards

Mockups for approval. One portal, two views: you manage every client and app from one place; the client requests work, watches it move, and sees what they are paying for. Sample data below is illustrative — nothing here is wired.

29 July 2026 · builds on the existing bm-portal routes and schema · approve the shape before any schema is written
portal.boommedia.us/admin

Overview

13 active clients · 14 apps · 9 hosted sites
Open requests
18
4 awaiting your reply
Due this week
6
2 overdue
Sites up
22/23
rankee.online apex down
Attacks blocked
1,204
last 7 days
Unpaid
$4,850
3 invoices
MRR
$8,600
+$450 vs last month

Needs you

Guarapos
Menu photos — new items
2d overdue
Rhoads Law
Approve homepage copy
Due today
Big Mike's
Question on invoice #1042
Reply
Untouchables
SSL cert expires in 11 days
Auto-flag

Client health

ClientSiteRequestsBilling
GuaraposUp5 openCurrent
Rhoads LawUp3 open30d
Big Mike'sUp2 openCurrent
UntouchablesCert1 openCurrent
Symphonyn/a7 open60d

All requests — every client, one board

New 7

Add gluten-free menu section
Guarapos 2h ago
Update attorney bios
Rhoads 5h ago
New bail bond calculator field
Big Mike's 1d

In progress 5

Holiday hours across all pages
Guarapos Eric
Google Business Profile refresh
Untouchables Eric

Waiting on client 4

Menu photos — new items
2d overdue
Approve homepage copy
Rhoads

Done 31

Online ordering embed
Shipped Jul 24
SMS consent checkbox
Shipped Jul 28

Decisions this mockup is making

One request object, two views. The client's "My requests" and your all-client board are the same rows filtered differently — not two features. That is what keeps the client's status honest: they see the real column their work sits in, so "where is this?" stops being an email.
"Waiting on you" is the column that earns its keep. Most agency delay is actually the client owing an asset or an approval. Naming that as a status — visible to them, with the upload button right there — moves the blame conversation into the product. It is the single most valuable column on the board.
The calendar shows dates, not availability. Due dates, report sends, invoice dates — derived from existing work. Making it a booking calendar means scheduling logic, conflicts and time zones, which is a different product. If you want clients booking calls, link Calendly.
Status and security are read-only panels here. Uptime comes from UptimeRobot, attacks from Compliee. bm-portal aggregates and never owns that data — the same boundary the monitoring doc argues for. "Attacks blocked: 312" on the client dashboard is the same number as the weekly digest.

What has to be built

The existing schema has campaigns, deliverables, invoices, dates, kpis, activity and profiles. The gap is the whole point of this mockup: there is no requests/tasks table. Everything on the kanban needs one, plus comments and attachments. Roughly: one migration, a request form, a board that both roles read, a client detail page for you, and the three read-only status panels.
Not in this mockup, deliberately: time tracking (that is Dashee's ruling, and the billable-hours build), drag-and-drop reordering (a nice-to-have that doubles board complexity), and client-to-client visibility of any kind. Say if any of those should be in v1.