From 08cdad3a4e7354158030fee71fc5392e471418e1 Mon Sep 17 00:00:00 2001 From: Ivan Date: Mon, 2 Mar 2026 03:41:49 +0000 Subject: [PATCH] docs: add Live Courts + CRM Clients design document Co-Authored-By: Claude Opus 4.6 --- .../2026-03-02-live-courts-crm-design.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/plans/2026-03-02-live-courts-crm-design.md diff --git a/docs/plans/2026-03-02-live-courts-crm-design.md b/docs/plans/2026-03-02-live-courts-crm-design.md new file mode 100644 index 0000000..bad8469 --- /dev/null +++ b/docs/plans/2026-03-02-live-courts-crm-design.md @@ -0,0 +1,58 @@ +# Live Courts + CRM Clients - Design Document + +## Overview + +Consolidate Bookings + Players into a "Live Courts" real-time status board. Replace the current Players page with a CRM-style Clients page focused on memberships, expirations, and visit history. + +## Navigation + +Before: Dashboard | Bookings | Players | Memberships | Reports | Settings +After: Dashboard | Live Courts | Clients | Memberships | Reports | Settings + +## Live Courts Page (/live) + +Real-time dashboard showing all 6 courts. 3x2 grid of court cards. + +### Court States +- Available (green) — empty, can check in players +- Active (blue) — players on court, shows player list +- Open Play (amber) — dedicated free courts, group scheduling +- Booked (purple) — upcoming booking in next 30 min + +### Actions +- Check In — add player (search existing or walk-in name) +- End Session — clear all players +- Schedule Group (open play only) — name/note + time, no cost + +### Auto-populate +Bookings for current time auto-show as active players. + +## Open Play Courts + +Settings > Courts toggle: "Open Play Court" (boolean). +- Amber badge on Live Courts +- No pricing on bookings +- Group scheduling: name/note + time slot, no client/payment + +## Clients CRM Page (/clients) + +### Stats Row +Total Clients | Active Memberships | Expiring This Month | No Membership + +### Table Columns +Name | Phone | Email | Membership | Status | Expires | Last Visit | Actions + +### Features +- Membership status badges (Active=green, Expiring=amber, Expired=red, None=gray) +- Filters: All / Active Members / Expiring Soon / Expired / No Membership +- Search by name, email, phone +- Client detail modal with membership + visit history + +## Schema Changes + +Court model: add `isOpenPlay Boolean @default(false)` + +New CourtSession model: +- id, courtId, clientId (optional), walkInName (optional) +- startTime, endTime, isActive +- Relations to Court and Client