OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-booking commits / d8d8d5b

Add management UI spec: dashboard, admin, profile, onboarding
Detailed wireframes for all management pages: - Provider onboarding wizard (5 steps) - Dashboard: calendar, clients, packages, availability, analytics, settings - Admin panel: platform overview, provider management, user management - Client profile page with keypair export/import - Client portal with session history + package progress - Access control matrix (who sees what) - Nav bar variants by role - 15 new API endpoints - Revised build phases (Phase 2 = 9 sub-tasks) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
d8d8d5b284e05eb54e7cd53cd9e9b32d333f679d
by plankatron <fleeky@gmail.com> · 2026-03-22T18:16:56.000Z

Changed files (1) +905 -0

docs/design/v1-management-ui.md +905 -0
……@@ -0,0 +1,905 @@
1# hyper-booking v1 — Management UI Spec
2
3Detailed specs for provider dashboard, admin panel, client portal,
4and onboarding wizard. These are the pages coaches use daily.
5
6---
7
8## 1. Provider Onboarding Wizard
9
10First-time setup flow. Shown when provider has `onboarding.completed === false`.
11
12### Step 1: Profile
13
14```
15┌─────────────────────────────────────────────┐
16│ Welcome to hyper-booking │
17│ Let's set up your booking page. │
18│ Step 1 of 5 │
19├─────────────────────────────────────────────┤
20│ │
21│ Display Name * │
22│ [Alexis Mattos ] │
23│ │
24│ URL Slug * │
25│ hyper-booking.com / [alexis-mattos] │
26│ ✓ Available │
27│ │
28│ Photo │
29│ [Upload Photo] or drag & drop │
30│ │
31│ Bio │
32│ [ ] │
33│ [ Markdown supported ] │
34│ [ ] │
35│ │
36│ Specialties (comma-separated) │
37│ [Health Coaching, Nutrition, Wellness] │
38│ │
39│ Accent Color │
40│ [#c4a265] [■ preview swatch] │
41│ │
42│ ┌───────────────────────────────────────┐ │
43│ │ [Continue →] │ │
44│ └───────────────────────────────────────┘ │
45│ │
46└─────────────────────────────────────────────┘
47```
48
49**Fields:**
50| Field | Type | Required | Validation |
51|-------|------|----------|------------|
52| displayName | text | Yes | 2-100 chars |
53| slug | text | Yes | lowercase, alphanumeric + hyphens, unique |
54| photo | file | No | jpg/png, max 2MB |
55| bio | textarea | No | max 5000 chars, markdown |
56| specialties | text | No | comma-separated, max 10 |
57| accentColor | color | No | hex color, default #c4a265 |
58
59**Slug validation:** Real-time check `GET /api/providers/check-slug/:slug` → `{ available: true/false }`
60
61### Step 2: Availability
62
63```
64┌─────────────────────────────────────────────┐
65│ Set Your Schedule │
66│ When are you available for sessions? │
67│ Step 2 of 5 │
68├─────────────────────────────────────────────┤
69│ │
70│ Timezone │
71│ [America/New_York ▾] │
72│ │
73│ Weekly Schedule │
74│ ┌─────────────────────────────────────┐ │
75│ │ Monday │ │
76│ │ [✓] Available │ │
77│ │ [09:00 ▾] to [12:00 ▾] [✕] │ │
78│ │ [14:00 ▾] to [17:00 ▾] [✕] │ │
79│ │ [+ Add window] │ │
80│ ├─────────────────────────────────────┤ │
81│ │ Tuesday │ │
82│ │ [✓] Available │ │
83│ │ [09:00 ▾] to [17:00 ▾] [✕] │ │
84│ │ [+ Add window] │ │
85│ ├─────────────────────────────────────┤ │
86│ │ Wednesday ... │ │
87│ ├─────────────────────────────────────┤ │
88│ │ Saturday │ │
89│ │ [ ] Available (day off) │ │
90│ ├─────────────────────────────────────┤ │
91│ │ Sunday │ │
92│ │ [ ] Available (day off) │ │
93│ └─────────────────────────────────────┘ │
94│ │
95│ Buffer Between Sessions │
96│ [15 ▾] minutes │
97│ │
98│ Advance Booking │
99│ Clients must book at least [24 ▾] hours │
100│ ahead, up to [60 ▾] days out. │
101│ │
102│ [← Back] [Continue →] │
103│ │
104└─────────────────────────────────────────────┘
105```
106
107**Interaction:**
108- Each day: toggle available on/off
109- Available days: one or more time windows with start/end dropdowns (15-min increments)
110- `[+ Add window]` adds another start/end pair (lunch break, etc.)
111- `[✕]` removes a window
112
113### Step 3: Cancellation Policy
114
115```
116┌─────────────────────────────────────────────┐
117│ Cancellation & Reschedule Policy │
118│ Step 3 of 5 │
119├─────────────────────────────────────────────┤
120│ │
121│ Cancellation Window │
122│ Clients must cancel at least │
123│ [24 ▾] hours before the session. │
124│ │
125│ Refund Policy │
126│ ○ Full refund (within window) │
127│ ○ 50% refund │
128│ ○ No refund (session forfeited) │
129│ │
130│ Reschedule Limit │
131│ Max [2 ▾] reschedules per booking. │
132│ │
133│ No-Show Policy │
134│ ○ Forfeit session from package │
135│ ○ No penalty │
136│ │
137│ [← Back] [Continue →] │
138│ │
139└─────────────────────────────────────────────┘
140```
141
142### Step 4: First Package
143
144```
145┌─────────────────────────────────────────────┐
146│ Create Your First Package │
147│ You can add more later from the dashboard. │
148│ Step 4 of 5 │
149├─────────────────────────────────────────────┤
150│ │
151│ Package Type │
152│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
153│ │ Discovery│ │ Single │ │ Bundle │ │
154│ │ (Free) │ │ Session │ │ Package │ │
155│ └──────────┘ └──────────┘ └──────────┘ │
156│ │
157│ Package Name * │
158│ [Free Discovery Call ] │
159│ │
160│ Description │
161│ [ ] │
162│ [ A low-pressure conversation... ] │
163│ │
164│ Session Duration │
165│ [15 ▾] minutes │
166│ │
167│ ── Only for Single/Bundle: ── │
168│ │
169│ Price │
170│ $ [75.00 ] [USD ▾] │
171│ │
172│ ── Only for Bundle: ── │
173│ │
174│ Number of Sessions │
175│ [6 ] │
176│ │
177│ Pay-in-Full Discount │
178│ [10 ] % │
179│ │
180│ Installment Plan │
181│ [✓] Allow installments: [3 ▾] payments │
182│ │
183│ [← Back] [Continue →] │
184│ │
185└─────────────────────────────────────────────┘
186```
187
188**Dynamic form:** Fields show/hide based on package type selection.
189
190### Step 5: Review & Publish
191
192```
193┌─────────────────────────────────────────────┐
194│ Review & Publish │
195│ Step 5 of 5 │
196├─────────────────────────────────────────────┤
197│ │
198│ Profile │
199│ ┌───────────────────────────────────────┐ │
200│ │ Alexis Mattos [Edit ✎] │ │
201│ │ Health Coaching · Nutrition · Wellness│ │
202│ │ alexis-mattos │ │
203│ └───────────────────────────────────────┘ │
204│ │
205│ Schedule │
206│ ┌───────────────────────────────────────┐ │
207│ │ Mon 9-12, 2-5 Tue 9-5 Wed 9-12 │ │
208│ │ Thu 10-6 Fri 9-3 Sat/Sun off │ │
209│ │ 15min buffer · 24h advance [Edit ✎] │ │
210│ └───────────────────────────────────────┘ │
211│ │
212│ Packages │
213│ ┌───────────────────────────────────────┐ │
214│ │ Free Discovery Call (15min) [Edit ✎] │ │
215│ └───────────────────────────────────────┘ │
216│ │
217│ Policies │
218│ ┌───────────────────────────────────────┐ │
219│ │ 24h cancellation · Full refund │ │
220│ │ Max 2 reschedules · Forfeit no-shows │ │
221│ │ [Edit ✎] │ │
222│ └───────────────────────────────────────┘ │
223│ │
224│ Preview: [Open booking page →] │
225│ │
226│ ┌───────────────────────────────────────┐ │
227│ │ [Publish Booking Page] │ │
228│ └───────────────────────────────────────┘ │
229│ │
230└─────────────────────────────────────────────┘
231```
232
233**[Edit ✎]** links jump back to the relevant wizard step.
234**[Publish]** sets `provider.active = true` and `onboarding.completed = true`.
235
236---
237
238## 2. Provider Dashboard
239
240### 2.1 Dashboard Home (Calendar)
241
242Default view at `/dashboard`. Shows today's schedule.
243
244```
245┌─────────────────────────────────────────────────────┐
246│ [hyper-booking] Dashboard [Alexis ▾] │
247├──────┬──────────────────────────────────────────────┤
248│ │ │
249│ Nav │ Today's Schedule — Thu, Mar 26 │
250│ │ │
251│ 📅 │ ┌────────────────────────────────────────┐ │
252│ Cal │ │ 10:00 AM Jane Smith │ │
253│ │ │ 60min Coaching · Session 3/6 │ │
254│ 👥 │ │ [View] [Notes] [No-Show] [Complete] │ │
255│ Cli │ ├────────────────────────────────────────┤ │
256│ │ │ 11:15 AM Bob Jones │ │
257│ 📦 │ │ 30min Session · Single │ │
258│ Pkg │ │ [View] [Notes] [No-Show] [Complete] │ │
259│ │ ├────────────────────────────────────────┤ │
260│ 📊 │ │ 2:00 PM Sara Lee │ │
261│ Ana │ │ 60min Deep Dive · Single │ │
262│ │ │ [View] [Notes] [No-Show] [Complete] │ │
263│ ⚙ │ └────────────────────────────────────────┘ │
264│ Set │ │
265│ │ Summary │
266│ │ ┌────────────────────────────────────────┐ │
267│ │ │ 3 sessions · 3 clients · $315 today │ │
268│ │ │ Next available: Fri 9:00 AM │ │
269│ │ └────────────────────────────────────────┘ │
270│ │ │
271│ │ ┌──── Week View ─────────────────────────┐ │
272│ │ │ [←] Mar 23 – 29, 2026 [→] │ │
273│ │ │ │ │
274│ │ │ Mon Tue Wed Thu Fri Sat Sun │ │
275│ │ │ 2 0 1 3 2 - - │ │
276│ │ │ sessions per day │ │
277│ │ └────────────────────────────────────────┘ │
278│ │ │
279└──────┴──────────────────────────────────────────────┘
280```
281
282**Session card actions:**
283- **View**: expand to see client details, package info, notes
284- **Notes**: add/edit post-session notes (visible to client in portal)
285- **No-Show**: mark as no-show (applies penalty per policy)
286- **Complete**: mark session done
287
288**Date navigation:**
289- Date picker or prev/next day arrows
290- Week summary shows session count per day
291
292### 2.2 Client List
293
294```
295┌──────┬──────────────────────────────────────────────┐
296│ Nav │ Clients (12) [Search 🔍] │
297│ │ │
298│ │ ┌────────────────────────────────────────┐ │
299│ │ │ Jane Smith jane@email.com │ │
300│ │ │ 6-Session Package · 3/6 used │ │
301│ │ │ Last session: Mar 24 · Next: Mar 26 │ │
302│ │ │ [View Profile →] │ │
303│ │ ├────────────────────────────────────────┤ │
304│ │ │ Bob Jones bob@email.com │ │
305│ │ │ Single Session · Completed │ │
306│ │ │ Last session: Mar 20 · No upcoming │ │
307│ │ │ [View Profile →] │ │
308│ │ ├────────────────────────────────────────┤ │
309│ │ │ Sara Lee sara@email.com │ │
310│ │ │ Discovery Call · Confirmed │ │
311│ │ │ Next: Mar 26 2:00 PM │ │
312│ │ │ [View Profile →] │ │
313│ │ └────────────────────────────────────────┘ │
314│ │ │
315└──────┴──────────────────────────────────────────────┘
316```
317
318### Client Detail (sub-page)
319
320```
321┌──────┬──────────────────────────────────────────────┐
322│ Nav │ [← Clients] Jane Smith │
323│ │ │
324│ │ Contact │
325│ │ Email: jane@email.com │
326│ │ Phone: +1 (555) 123-4567 │
327│ │ Client since: Feb 15, 2026 │
328│ │ │
329│ │ Active Packages │
330│ │ ┌────────────────────────────────────────┐ │
331│ │ │ 6-Session Coaching Package │ │
332│ │ │ ████████░░░░ 3 of 6 used │ │
333│ │ │ Purchased: Feb 15 · Paid: $500 │ │
334│ │ └────────────────────────────────────────┘ │
335│ │ │
336│ │ Session History │
337│ │ ┌────────────────────────────────────────┐ │
338│ │ │ Mar 24 · Completed │ │
339│ │ │ Notes: "Good progress on sleep..." │ │
340│ │ ├────────────────────────────────────────┤ │
341│ │ │ Mar 17 · Completed │ │
342│ │ │ Notes: "Set initial goals..." │ │
343│ │ ├────────────────────────────────────────┤ │
344│ │ │ Mar 10 · Completed │ │
345│ │ │ Notes: "Intake + getting to know..." │ │
346│ │ └────────────────────────────────────────┘ │
347│ │ │
348│ │ Upcoming │
349│ │ ┌────────────────────────────────────────┐ │
350│ │ │ Mar 26 · 10:00 AM · Confirmed │ │
351│ │ │ [Cancel] [Reschedule] │ │
352│ │ └────────────────────────────────────────┘ │
353│ │ │
354│ │ Form Responses │
355│ │ ┌────────────────────────────────────────┐ │
356│ │ │ Intake Form — submitted Feb 15 │ │
357│ │ │ [View Responses →] │ │
358│ │ └────────────────────────────────────────┘ │
359│ │ │
360│ │ Provider Notes (private) │
361│ │ [ ] │
362│ │ [ General notes about this client ] │
363│ │ [Save Notes] │
364│ │ │
365└──────┴──────────────────────────────────────────────┘
366```
367
368### 2.3 Package Manager
369
370```
371┌──────┬──────────────────────────────────────────────┐
372│ Nav │ Packages (4) [+ New Package] │
373│ │ │
374│ │ ┌────────────────────────────────────────┐ │
375│ │ │ ● Free Discovery Call │ │
376│ │ │ Discovery · 15min · Free │ │
377│ │ │ 5 booked this month │ │
378│ │ │ [Edit] [Archive] │ │
379│ │ ├────────────────────────────────────────┤ │
380│ │ │ ● 30-Minute Health Coaching Session │ │
381│ │ │ Single · 30min · $75 │ │
382│ │ │ 3 booked this month │ │
383│ │ │ [Edit] [Duplicate] [Archive] │ │
384│ │ ├────────────────────────────────────────┤ │
385│ │ │ ● 60-Minute Deep Dive Session │ │
386│ │ │ Single · 60min · $120 │ │
387│ │ │ 2 booked this month │ │
388│ │ │ [Edit] [Duplicate] [Archive] │ │
389│ │ ├────────────────────────────────────────┤ │
390│ │ │ ● 6-Session Coaching Package │ │
391│ │ │ Bundle · 6×60min · $600 (save 10%) │ │
392│ │ │ 1 sold this month · $600 revenue │ │
393│ │ │ [Edit] [Duplicate] [Archive] │ │
394│ │ └────────────────────────────────────────┘ │
395│ │ │
396│ │ Archived │
397│ │ (none) │
398│ │ │
399└──────┴──────────────────────────────────────────────┘
400```
401
402**[+ New Package]** opens the package form (same as onboarding Step 4).
403**[Duplicate]** copies the package with "(Copy)" appended to name.
404**[Archive]** sets `active: false` — doesn't delete, just hides from booking page.
405
406### Package Edit Form
407
408```
409┌──────┬──────────────────────────────────────────────┐
410│ Nav │ Edit Package │
411│ │ │
412│ │ Package Type │
413│ │ [Single ▾] │
414│ │ │
415│ │ Package Name * │
416│ │ [30-Minute Health Coaching Session ] │
417│ │ │
418│ │ Description │
419│ │ [ ] │
420│ │ [ One more step toward... ] │
421│ │ │
422│ │ Session Duration │
423│ │ [30 ▾] minutes │
424│ │ │
425│ │ Price │
426│ │ $ [75.00 ] [USD ▾] │
427│ │ │
428│ │ ── Bundle Options (hidden for single) ── │
429│ │ │
430│ │ Image │
431│ │ [Upload Image] (shown on booking page) │
432│ │ │
433│ │ Attach Intake Form │
434│ │ [None ▾] (select from your forms) │
435│ │ │
436│ │ Attach Contract │
437│ │ [None ▾] (select from your contracts) │
438│ │ │
439│ │ [Cancel] [Save Package] │
440│ │ │
441└──────┴──────────────────────────────────────────────┘
442```
443
444### 2.4 Availability Editor
445
446```
447┌──────┬──────────────────────────────────────────────┐
448│ Nav │ Availability │
449│ │ │
450│ │ Timezone: [America/New_York ▾] │
451│ │ │
452│ │ Weekly Schedule │
453│ │ ┌────────────────────────────────────────┐ │
454│ │ │ Monday [✓] │ │
455│ │ │ 09:00 - 12:00 [✕] │ │
456│ │ │ 14:00 - 17:00 [✕] │ │
457│ │ │ [+ Add window] │ │
458│ │ │────────────────────────────────────────│ │
459│ │ │ Tuesday [✓] │ │
460│ │ │ 09:00 - 17:00 [✕] │ │
461│ │ │ [+ Add window] │ │
462│ │ │────────────────────────────────────────│ │
463│ │ │ ... │ │
464│ │ │────────────────────────────────────────│ │
465│ │ │ Saturday [ ] (day off) │ │
466│ │ │────────────────────────────────────────│ │
467│ │ │ Sunday [ ] (day off) │ │
468│ │ └────────────────────────────────────────┘ │
469│ │ │
470│ │ Buffer: [15 ▾] min │
471│ │ Min advance: [24 ▾] hours │
472│ │ Max advance: [60 ▾] days │
473│ │ │
474│ │ [Save Schedule] │
475│ │ │
476│ │ ──────────────────────────────────────── │
477│ │ │
478│ │ Date Overrides │
479│ │ ┌────────────────────────────────────────┐ │
480│ │ │ Apr 15 ✕ Day Off (Vacation) │ │
481│ │ │ Apr 20 ✓ 08:00-11:00 (Special hours) │ │
482│ │ └────────────────────────────────────────┘ │
483│ │ [+ Add Override] │
484│ │ │
485└──────┴──────────────────────────────────────────────┘
486```
487
488**[+ Add Override]** opens a mini-form:
489- Date picker
490- Toggle: Day Off / Custom Hours
491- If Custom Hours: time window inputs
492
493### 2.5 Analytics
494
495```
496┌──────┬──────────────────────────────────────────────┐
497│ Nav │ Analytics [This Month ▾] │
498│ │ │
499│ │ Revenue │
500│ │ ┌────────────────────────────────────────┐ │
501│ │ │ $2,340 │ │
502│ │ │ this month (↑ 12% vs last month) │ │
503│ │ └────────────────────────────────────────┘ │
504│ │ │
505│ │ Sessions │
506│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
507│ │ │ 24 │ │ 2 │ │ 1 │ │
508│ │ │Completed │ │Cancelled│ │ No-Show │ │
509│ │ └──────────┘ └──────────┘ └──────────┘ │
510│ │ │
511│ │ By Package │
512│ │ ┌────────────────────────────────────────┐ │
513│ │ │ 6-Session Package 8 sold $4,800 │ │
514│ │ │ 60min Deep Dive 5 sold $600 │ │
515│ │ │ 30min Session 12 sold $900 │ │
516│ │ │ Discovery Call 15 done Free │ │
517│ │ └────────────────────────────────────────┘ │
518│ │ │
519│ │ Client Retention │
520│ │ ┌────────────────────────────────────────┐ │
521│ │ │ 67% rebook rate │ │
522│ │ │ 8 of 12 clients booked again │ │
523│ │ └────────────────────────────────────────┘ │
524│ │ │
525└──────┴──────────────────────────────────────────────┘
526```
527
528### 2.6 Settings
529
530```
531┌──────┬──────────────────────────────────────────────┐
532│ Nav │ Settings │
533│ │ │
534│ │ Profile │
535│ │ ┌────────────────────────────────────────┐ │
536│ │ │ Display Name [Alexis Mattos ] │ │
537│ │ │ Bio [Edit ✎] │ │
538│ │ │ Specialties [Edit ✎] │ │
539│ │ │ Accent Color [#c4a265] [■] │ │
540│ │ │ Photo [Change] │ │
541│ │ │ [Save Profile] │ │
542│ │ └────────────────────────────────────────┘ │
543│ │ │
544│ │ Booking Page │
545│ │ ┌────────────────────────────────────────┐ │
546│ │ │ Your URL: /alexis-mattos │ │
547│ │ │ Page status: ● Published │ │
548│ │ │ [Preview Page] [Unpublish] │ │
549│ │ └────────────────────────────────────────┘ │
550│ │ │
551│ │ Cancellation Policy │
552│ │ ┌────────────────────────────────────────┐ │
553│ │ │ Window: [24 ▾] hours │ │
554│ │ │ Refund: [Full ▾] │ │
555│ │ │ Max reschedules: [2 ▾] │ │
556│ │ │ No-show: [Forfeit ▾] │ │
557│ │ │ [Save Policy] │ │
558│ │ └────────────────────────────────────────┘ │
559│ │ │
560│ │ Payments (Phase 3) │
561│ │ ┌────────────────────────────────────────┐ │
562│ │ │ Stripe: Not connected │ │
563│ │ │ [Connect with Stripe →] │ │
564│ │ └────────────────────────────────────────┘ │
565│ │ │
566│ │ Notifications │
567│ │ ┌────────────────────────────────────────┐ │
568│ │ │ Email confirmations: [✓] │ │
569│ │ │ SMS reminders: [ ] (setup required) │ │
570│ │ │ [Save Notification Settings] │ │
571│ │ └────────────────────────────────────────┘ │
572│ │ │
573│ │ Identity │
574│ │ ┌────────────────────────────────────────┐ │
575│ │ │ Public Key: abc123... │ │
576│ │ │ [Export Keypair] [Sign Out] │ │
577│ │ └────────────────────────────────────────┘ │
578│ │ │
579└──────┴──────────────────────────────────────────────┘
580```
581
582---
583
584## 3. Admin Panel
585
586Only visible to users with admin permission. First user auto-promoted.
587
588### 3.1 Admin Home
589
590```
591┌─────────────────────────────────────────────────────┐
592│ [hyper-booking] Admin Panel [← Dashboard] │
593├─────────────────────────────────────────────────────┤
594│ │
595│ Platform Overview │
596│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
597│ │ 3 │ │ 89 │ │ $4,200 │ │
598│ │Providers │ │ Clients │ │ Revenue │ │
599│ │ │ │ │ │(this mo) │ │
600│ └──────────┘ └──────────┘ └──────────┘ │
601│ │
602│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
603│ │ 156 │ │ $210 │ │ 5% │ │
604│ │ Bookings │ │ Platform │ │ Fee Rate │ │
605│ │ (total) │ │ Fees │ │ │ │
606│ └──────────┘ └──────────┘ └──────────┘ │
607│ │
608│ Quick Actions │
609│ [Manage Providers] [Manage Users] [View Logs] │
610│ │
611└─────────────────────────────────────────────────────┘
612```
613
614### 3.2 Provider Management
615
616```
617┌─────────────────────────────────────────────────────┐
618│ [← Admin] Providers (3) [+ Add Provider] │
619├─────────────────────────────────────────────────────┤
620│ │
621│ ┌───────────────────────────────────────────────┐ │
622│ │ Alexis Mattos /alexis-mattos │ │
623│ │ ● Active · Admin · 4 packages · 89 clients │ │
624│ │ Revenue: $4,200 (this month) │ │
625│ │ [View Dashboard] [Edit] [Disable] │ │
626│ ├───────────────────────────────────────────────┤ │
627│ │ Sarah Chen /sarah-chen │ │
628│ │ ● Active · Provider · 3 packages · 23 clients│ │
629│ │ Revenue: $1,800 (this month) │ │
630│ │ [View Dashboard] [Edit] [Promote] [Disable] │ │
631│ ├───────────────────────────────────────────────┤ │
632│ │ Mike Torres /mike-torres │ │
633│ │ ○ Onboarding · Provider · 0 packages │ │
634│ │ Step 3 of 5 (hasn't finished setup) │ │
635│ │ [View] [Promote] [Remove] │ │
636│ └───────────────────────────────────────────────┘ │
637│ │
638└─────────────────────────────────────────────────────┘
639```
640
641**Actions:**
642- **Promote**: grant admin permission
643- **Disable**: set `provider.active = false` (hides booking page, keeps data)
644- **Remove**: delete provider record (only if no bookings)
645
646### 3.3 User Management
647
648```
649┌─────────────────────────────────────────────────────┐
650│ [← Admin] Users (92) [Search 🔍] │
651├─────────────────────────────────────────────────────┤
652│ │
653│ Role Filter: [All ▾] │
654│ │
655│ ┌───────────────────────────────────────────────┐ │
656│ │ Alexis Mattos admin · provider │ │
657│ │ ID: prov_5847dc... · Joined: Mar 22 │ │
658│ │ [Demote from Admin] │ │
659│ ├───────────────────────────────────────────────┤ │
660│ │ Jane Smith client │ │
661│ │ ID: usr_a3f1... · Joined: Feb 15 │ │
662│ │ jane@email.com · Provider: Alexis Mattos │ │
663│ │ [Promote to Provider] [Promote to Admin] │ │
664│ ├───────────────────────────────────────────────┤ │
665│ │ Bob Jones client │ │
666│ │ ID: usr_b2e4... · Joined: Mar 10 │ │
667│ │ bob@email.com · Provider: Alexis Mattos │ │
668│ │ [Promote to Provider] [Promote to Admin] │ │
669│ └───────────────────────────────────────────────┘ │
670│ │
671│ Showing 1-20 of 92 [← Prev] [Next →] │
672│ │
673└─────────────────────────────────────────────────────┘
674```
675
676---
677
678## 4. Client Profile Page
679
680Available to any signed-in user at `/profile`.
681
682```
683┌─────────────────────────────────────────────────────┐
684│ [hyper-booking] [← Back] │
685├─────────────────────────────────────────────────────┤
686│ │
687│ Your Profile │
688│ │
689│ Display Name │
690│ [Jane Smith ] │
691│ │
692│ Email (for notifications) │
693│ [jane@email.com ] │
694│ │
695│ Phone (for SMS reminders, optional) │
696│ [+1 555 123 4567 ] │
697│ │
698│ [Save Profile] │
699│ │
700│ ──────────────────────────────────────────────── │
701│ │
702│ Identity │
703│ ┌───────────────────────────────────────────────┐ │
704│ │ Public Key: abc123def456... │ │
705│ │ Method: web-identity (ed25519) │ │
706│ │ Created: Mar 22, 2026 │ │
707│ └───────────────────────────────────────────────┘ │
708│ │
709│ [Export Keypair] — save to file for backup │
710│ [Import Keypair] — restore from backup │
711│ │
712│ ──────────────────────────────────────────────── │
713│ │
714│ Notification Preferences │
715│ ┌───────────────────────────────────────────────┐ │
716│ │ [✓] Email confirmations │ │
717│ │ [✓] Email reminders (24h before) │ │
718│ │ [ ] SMS reminders (requires phone above) │ │
719│ │ [✓] In-app notifications │ │
720│ │ │ │
721│ │ Quiet Hours │ │
722│ │ No notifications between [22:00] and [07:00] │ │
723│ └───────────────────────────────────────────────┘ │
724│ [Save Preferences] │
725│ │
726│ ──────────────────────────────────────────────── │
727│ │
728│ [Sign Out] — clears keypair from this browser │
729│ │
730└─────────────────────────────────────────────────────┘
731```
732
733---
734
735## 5. Client Portal (expanded)
736
737At `/portal`. Shows all providers the client has booked with.
738
739```
740┌─────────────────────────────────────────────────────┐
741│ [hyper-booking] Hi, Jane [Profile] [Sign Out] │
742├─────────────────────────────────────────────────────┤
743│ │
744│ Upcoming Sessions │
745│ │
746│ ┌───────────────────────────────────────────────┐ │
747│ │ Thu Mar 26 · 10:00 AM │ │
748│ │ 60min Coaching with Alexis Mattos │ │
749│ │ Session 3 of 6 │ │
750│ │ [Reschedule] [Cancel] │ │
751│ └───────────────────────────────────────────────┘ │
752│ ┌───────────────────────────────────────────────┐ │
753│ │ Thu Apr 2 · 10:00 AM │ │
754│ │ 60min Coaching with Alexis Mattos │ │
755│ │ Session 4 of 6 │ │
756│ │ [Reschedule] [Cancel] │ │
757│ └───────────────────────────────────────────────┘ │
758│ │
759│ ──────────────────────────────────────────────── │
760│ │
761│ Your Packages │
762│ │
763│ ┌───────────────────────────────────────────────┐ │
764│ │ 6-Session Coaching Package │ │
765│ │ with Alexis Mattos │ │
766│ │ ██████████░░░░░░ 3 of 6 used │ │
767│ │ [Book Next Session →] │ │
768│ └───────────────────────────────────────────────┘ │
769│ │
770│ ──────────────────────────────────────────────── │
771│ │
772│ Past Sessions │
773│ │
774│ ┌───────────────────────────────────────────────┐ │
775│ │ Thu Mar 19 · Completed │ │
776│ │ 60min Coaching with Alexis Mattos │ │
777│ │ Notes: "Good progress on sleep schedule..." │ │
778│ ├───────────────────────────────────────────────┤ │
779│ │ Thu Mar 12 · Completed │ │
780│ │ Notes: "Set initial goals for nutrition..." │ │
781│ ├───────────────────────────────────────────────┤ │
782│ │ Thu Mar 5 · Completed │ │
783│ │ Notes: "Intake session, reviewed history..." │ │
784│ └───────────────────────────────────────────────┘ │
785│ │
786│ ──────────────────────────────────────────────── │
787│ │
788│ [Payment History] [Forms & Documents] │
789│ │
790└─────────────────────────────────────────────────────┘
791```
792
793---
794
795## 6. Navigation & Access Control
796
797### Who Sees What
798
799| Page | Anonymous | Client | Provider | Admin |
800|------|-----------|--------|----------|-------|
801| `/:slug` (booking page) | ✓ | ✓ | ✓ | ✓ |
802| `/:slug/book/:id` (calendar) | ✓ | ✓ | ✓ | ✓ |
803| `/profile` | ✗ | ✓ | ✓ | ✓ |
804| `/portal` | ✗ | ✓ | ✓ | ✓ |
805| `/dashboard` | ✗ | ✗ | ✓ (own) | ✓ (any) |
806| `/dashboard/clients` | ✗ | ✗ | ✓ (own) | ✓ |
807| `/dashboard/packages` | ✗ | ✗ | ✓ (own) | ✓ |
808| `/dashboard/availability` | ✗ | ✗ | ✓ (own) | ✓ |
809| `/dashboard/analytics` | ✗ | ✗ | ✓ (own) | ✓ |
810| `/dashboard/settings` | ✗ | ✗ | ✓ (own) | ✓ |
811| `/admin` | ✗ | ✗ | ✗ | ✓ |
812| `/admin/providers` | ✗ | ✗ | ✗ | ✓ |
813| `/admin/users` | ✗ | ✗ | ✗ | ✓ |
814
815### Nav Bar (changes by role)
816
817**Anonymous:**
818```
819[hyper-booking] [Sign In]
820```
821
822**Client:**
823```
824[hyper-booking] [Portal] [Hi, Jane ▾] [Profile]
825```
826
827**Provider:**
828```
829[hyper-booking] [Dashboard] [Portal] [Alexis ▾] [Settings]
830```
831
832**Admin:**
833```
834[hyper-booking] [Dashboard] [Admin] [Portal] [Alexis ▾] [Settings]
835```
836
837---
838
839## 7. API Endpoints (additions for management UI)
840
841```
842# Profile
843GET /api/auth/me Current user info + role
844PUT /api/profile Update display name, email, phone
845GET /api/profile/notifications Notification preferences
846PUT /api/profile/notifications Update notification preferences
847
848# Dashboard
849GET /api/dashboard/today Today's sessions + summary stats
850GET /api/dashboard/week Week overview (session counts per day)
851
852# Clients
853GET /api/dashboard/clients Client list (with search)
854GET /api/dashboard/clients/:id Client detail (bookings, purchases, forms)
855PUT /api/dashboard/clients/:id/notes Update private provider notes on client
856
857# Analytics
858GET /api/dashboard/analytics Revenue, session counts, retention
859GET /api/dashboard/analytics/packages Per-package breakdown
860
861# Admin
862GET /api/admin/overview Platform stats (providers, clients, revenue)
863GET /api/admin/providers All providers with stats
864POST /api/admin/providers Create new provider account
865PUT /api/admin/providers/:id/status Enable/disable provider
866POST /api/admin/promote Promote user to provider or admin
867POST /api/admin/demote Demote user
868GET /api/admin/users All users with roles
869
870# Onboarding
871GET /api/onboarding Current onboarding state
872PUT /api/onboarding/step/:step Complete onboarding step
873POST /api/onboarding/publish Publish booking page
874
875# Provider slug check
876GET /api/providers/check-slug/:slug Check slug availability
877```
878
879---
880
881## 8. Revised Build Phases
882
883Based on this audit, the phases should be:
884
885```
886Phase 1: Core Booking + Auth ✅ DONE
887Phase 2: Management UI ← CURRENT
888 2a: Dashboard home (today's schedule)
889 2b: Package manager (create/edit/archive)
890 2c: Availability editor
891 2d: Client list + detail
892 2e: Settings page (profile, policies)
893 2f: Profile page (client)
894 2g: Client portal (bookings, packages)
895 2h: Admin panel (providers, users, stats)
896 2i: Onboarding wizard
897Phase 3: Payments (hyper-pay + Stripe Connect)
898Phase 4: Notifications (email, SMS, push)
899Phase 5: Forms & Content (intake, contracts, surveys)
900Phase 6: Groups & Advanced (group sessions, subscriptions)
901```
902
903Phase 2 is the biggest phase — it's essentially 9 sub-tasks.
904Recommended order: 2a → 2b → 2c → 2e → 2g → 2d → 2f → 2h → 2i
905(build what the provider needs first, then client, then admin)