docs: add Live Courts + CRM Clients design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
58
docs/plans/2026-03-02-live-courts-crm-design.md
Normal file
58
docs/plans/2026-03-02-live-courts-crm-design.md
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user