How priyayids/bookspace works
BookSpace supports public room discovery and reservation, live occupancy viewing, and administrator workflows for approvals, room management, settings, and usage oversight. The frontend pages use a typed REST client; an Express server routes requests to domain handlers, which use Prisma for persistence. Backend excerpts show booking validation and conflict checks. Other route behavior and several UI details are described by the README and SOURCE INDEX; links based only on those documented relationships cite the README.
Main entry points: index.ts HTTP server · App.tsx Page navigation · api/client.ts Typed API client · prisma/client.ts Prisma client
Components 19
Frontend experiences
- Reservations
frontend/src/pages/ReservationPage.tsx - Occupancy display
frontend/src/pages/OccupancyPage.tsx - Admin console
frontend/src/pages/AdminPage.tsx - Room timeline
frontend/src/components/RoomTimeline.tsx - Page navigation
frontend/src/App.tsx
API and transport
- Typed API client
frontend/src/lib/api/client.ts
Backend services
- HTTP server
backend/src/index.ts - Admin authentication
backend/src/routes/auth.ts - JWT middleware
backend/src/middleware/auth.ts - Booking lifecycle
backend/src/routes/bookings.ts - Time validation
backend/src/utils/validation.ts - Room management
backend/src/routes/rooms.ts - Usage dashboard
backend/src/routes/dashboard.ts - Booking settings
backend/src/routes/settings.ts
Persistence
- Prisma client
backend/src/prisma/client.ts - Booking data model
backend/prisma/schema.prisma
Other components
- Room user
- Administrator
- PostgreSQL
Connections 26
- Room user → Page navigation: opens app
README.md - Administrator → Page navigation: opens app
README.md - Page navigation → Reservations: routes to
frontend/src/App.tsx - Page navigation → Occupancy display: routes to
frontend/src/App.tsx - Page navigation → Admin console: routes to
frontend/src/App.tsx - Reservations → Typed API client: requests data
frontend/src/pages/ReservationPage.tsx - Admin console → Typed API client: requests admin data
frontend/src/pages/AdminPage.tsx - Occupancy display → Typed API client: requests status
frontend/src/pages/OccupancyPage.tsx - Reservations → Room timeline: renders
frontend/src/pages/ReservationPage.tsx - Occupancy display → Room timeline: renders
frontend/src/pages/OccupancyPage.tsx - Room timeline → Typed API client: fetches availability
frontend/src/components/RoomTimeline.tsx - Typed API client → HTTP server: sends REST requests
README.md - HTTP server → Admin authentication: mounts auth routes
backend/src/index.ts - HTTP server → Booking lifecycle: mounts booking routes
backend/src/index.ts - HTTP server → Room management: mounts room routes
backend/src/index.ts - HTTP server → Booking settings: mounts settings routes
backend/src/index.ts - HTTP server → Usage dashboard: mounts protected routes
backend/src/index.ts - HTTP server → JWT middleware: protects dashboard
backend/src/index.ts - Booking lifecycle → Time validation: checks overlaps
backend/src/routes/bookings.ts - Booking lifecycle → Prisma client: reads and writes
backend/src/routes/bookings.ts - Room management → Prisma client: reads and writes
backend/src/routes/rooms.ts - Booking settings → Prisma client: reads and writes
backend/src/routes/settings.ts - Usage dashboard → Prisma client: queries metrics
backend/src/routes/dashboard.ts - Prisma client → Booking data model: uses data models
README.md - Booking data model → PostgreSQL: persists records
README.md - Admin authentication → Administrator: issues login token
README.md