Visual Seat Planner
Status: Planned Goal: Consolidate the visual seat planner spec — covering the operator layout editor, the passenger-facing seat selection flow, and the real-time concurrent hold mechanics — into a single authoritative project.
Context
The visual seat planner spans three product surfaces:
| # | Surface | Consumer | Purpose |
|---|---|---|---|
| 1 | Seat Map Layout Editor | Operator (Workspace) | Define rows, aisles, special seats, and accessibility zones per vehicle |
| 2 | Passenger Seat Selection | Passenger (Booking Widget) | Interactive seat pick during checkout with live hold indicators |
| 3 | Dispatcher Seat View | Dispatcher (Workspace) | View and manually reassign seats on the booking manifest |
The SeatMap Vue component in @busflow/ui-domain renders all three surfaces. The backend stores layouts as JSONB in Vehicle.seat_map_layout and manages holds via SeatReservation with TTL alignment (see ADR-013).
Documents
No documents yet — this project is bootstrapping.
Inspirations
| Source | Relevance |
|---|---|
| FareHarbor — Inventory Management | Custom layout builder for bookable spaces, customer self-service seat selection, and per-seat ticket/pricing tiers. Closest market reference for the operator-side layout editor and passenger-facing pick flow. |
Success Criteria
- [ ] Full UX spec for all three surfaces
- [ ]
SeatMapLayoutJSONB schema documented - [ ]
SeatMapcomponent prop contract and interaction model specified - [ ] Real-time concurrent hold flow (WebSocket subscription) defined end-to-end
- [ ] Vehicle swap seat remapping algorithm integrated into spec