| … | … | @@ -0,0 +1,905 @@ |
| 1 | # hyper-booking v1 — Management UI Spec |
| 2 | |
| 3 | Detailed specs for provider dashboard, admin panel, client portal, |
| 4 | and onboarding wizard. These are the pages coaches use daily. |
| 5 | |
| 6 | --- |
| 7 | |
| 8 | ## 1. Provider Onboarding Wizard |
| 9 | |
| 10 | First-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 | |
| 242 | Default 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 | |
| 586 | Only 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 | |
| 680 | Available 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 | |
| 737 | At `/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 |
| 843 | GET /api/auth/me Current user info + role |
| 844 | PUT /api/profile Update display name, email, phone |
| 845 | GET /api/profile/notifications Notification preferences |
| 846 | PUT /api/profile/notifications Update notification preferences |
| 847 | |
| 848 | # Dashboard |
| 849 | GET /api/dashboard/today Today's sessions + summary stats |
| 850 | GET /api/dashboard/week Week overview (session counts per day) |
| 851 | |
| 852 | # Clients |
| 853 | GET /api/dashboard/clients Client list (with search) |
| 854 | GET /api/dashboard/clients/:id Client detail (bookings, purchases, forms) |
| 855 | PUT /api/dashboard/clients/:id/notes Update private provider notes on client |
| 856 | |
| 857 | # Analytics |
| 858 | GET /api/dashboard/analytics Revenue, session counts, retention |
| 859 | GET /api/dashboard/analytics/packages Per-package breakdown |
| 860 | |
| 861 | # Admin |
| 862 | GET /api/admin/overview Platform stats (providers, clients, revenue) |
| 863 | GET /api/admin/providers All providers with stats |
| 864 | POST /api/admin/providers Create new provider account |
| 865 | PUT /api/admin/providers/:id/status Enable/disable provider |
| 866 | POST /api/admin/promote Promote user to provider or admin |
| 867 | POST /api/admin/demote Demote user |
| 868 | GET /api/admin/users All users with roles |
| 869 | |
| 870 | # Onboarding |
| 871 | GET /api/onboarding Current onboarding state |
| 872 | PUT /api/onboarding/step/:step Complete onboarding step |
| 873 | POST /api/onboarding/publish Publish booking page |
| 874 | |
| 875 | # Provider slug check |
| 876 | GET /api/providers/check-slug/:slug Check slug availability |
| 877 | ``` |
| 878 | |
| 879 | --- |
| 880 | |
| 881 | ## 8. Revised Build Phases |
| 882 | |
| 883 | Based on this audit, the phases should be: |
| 884 | |
| 885 | ``` |
| 886 | Phase 1: Core Booking + Auth ✅ DONE |
| 887 | Phase 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 |
| 897 | Phase 3: Payments (hyper-pay + Stripe Connect) |
| 898 | Phase 4: Notifications (email, SMS, push) |
| 899 | Phase 5: Forms & Content (intake, contracts, surveys) |
| 900 | Phase 6: Groups & Advanced (group sessions, subscriptions) |
| 901 | ``` |
| 902 | |
| 903 | Phase 2 is the biggest phase — it's essentially 9 sub-tasks. |
| 904 | Recommended order: 2a → 2b → 2c → 2e → 2g → 2d → 2f → 2h → 2i |
| 905 | (build what the provider needs first, then client, then admin) |