Repository navigation
Home
amalps565 edited this page Sep 30, 2026
·
5 revisions
An interactive Office Hot-Desking Map. Employees see an office floor as a grid of desks, watch desk statuses change in real time, and click a desk to reserve it for the day.
Status: all eight issues are built. The backend, frontend, and end-to-end tests are on
main. See Roadmap.
The core booking backend works, but three problems make the map unreliable:
- Adjacent-seat race conditions. Two people booking neighbouring desks at the same moment can both succeed, breaking the spacing rule.
- Invalid spatial isolation selections. The backend accepts bookings next to already-reserved desks.
- No fluid matrix updates. The grid doesn't update live, or redraws the whole floor for a single change.
See Problem Statement for details.
Overview
- Problem Statement: the three problems and the expected behavior
- Decisions and Assumptions: stack, booking rules, and what was assumed
- Getting Started: prerequisites, running the app, and running the tests
- Troubleshooting: fixes for common local problems (ports, memory, Windows)
- Roadmap: milestones from scaffolding to end-to-end tests
Design
- Architecture: how the backend, frontend, and database fit together
- Data Model: tables, constraints, and versioning
- Domain Rules: bookings, the spacing rule, and neighbour modes
- Booking Concurrency: the write-skew race and how locking fixes it
- API Reference: REST endpoints and error codes
- Real-Time Updates: the WebSocket contract and client resync
- Frontend Design: the store, grid rendering, optimistic booking, accessibility
Process
- Testing Strategy: test levels and the concurrency test recipe
- Development Workflow: issues, branches, PRs, Claude Code skills and agents
| Layer | Technology |
|---|---|
| Backend | Java 21, Spring Boot 4, Spring Data JPA, Flyway, Spring Security (JWT), WebSocket (STOMP) |
| Frontend | React, TypeScript, Vite, TanStack Query, @stomp/stompjs
|
| Database | PostgreSQL (Docker Compose) |
| Testing | JUnit 5 + Testcontainers, Vitest + Testing Library, Playwright |
Repository · The CLAUDE.md files in the repo are the source of truth for rules and the API contract. If this wiki disagrees with them, the repo wins.