RoomKit
Room booking engine for educational institutions with locations, conflicts, recurrence, blackouts, exams, and bulk operations
RoomKit is a full-featured room booking system designed for universities and educational institutions. It manages locations, rooms, bookings, conflicts, recurrence, blackouts, exams, and bulk operations. It ships as two packages that work together.
Packages
| Package | Description |
|---|---|
@hfu.digital/roomkit-nestjs | Backend NestJS module with domain services, storage interfaces, and Prisma adapters |
@hfu.digital/roomkit-react | Frontend library with headless hooks and pre-built booking-UI components |
Key Features
- Location Hierarchy — Institutions, campuses, buildings, floors, wings, rooms as a path-navigable tree
- Room Management — Capacities (seated, exam, standing), equipment tags, accessibility attributes, partition relationships
- Booking Lifecycle — State machine:
requested → confirmed → in_progress → completed/cancelled - Conflict Detection — Direct + partition-tree overlap checks with alternative suggestions
- Recurrence — Weekly, biweekly, and custom calendar-week patterns with exception dates
- Blackout Windows — Location-scoped time blocks that cascade down the hierarchy
- Priority System — Configurable priority tiers with automatic resolution by purpose type
- Travel-Time Validation — Cross-campus schedule validation against a travel-time matrix
- Exam Mode — Layout-aware capacity calculations with cohort overlap protection
- Bulk Operations — Semester import, date shifting, batch cancellation with progress tracking
- Cascading Configuration — Hierarchical config inheritance with per-node overrides
- Event Bus — 12 domain event types for reactive integrations
- Audit Trail — Full state-transition history for every booking
Versioning
CalVer (yyyy.mm.version). Pin exact versions in package.json; range operators (^, ~) do not behave like semver across month boundaries. See the docs root for details.
Quick Links
Getting Started
Install and wire up the backend and frontend packages
Architecture
Hexagonal design, storage adapters, state machine, and conflict pipeline
Backend
@hfu.digital/roomkit-nestjs — domain services, storage, events
Frontend
@hfu.digital/roomkit-react — hooks and booking components
Type Reference
Entity, enum, and result type definitions
Guides
Custom storage, custom priorities, recurrence patterns
Examples
Working NestJS, Next.js, and full-stack examples