CourseKit
CourseKit
A timetable engine for academic scheduling with recurring events, conflict detection, and a React frontend
CourseKit is an open-source timetable engine for academic scheduling. It handles recurring events, conflict detection, availability management, and ships as two packages that work together.
Packages
| Package | Description |
|---|---|
@hfu.digital/coursekit-nestjs | Backend module for NestJS with pluggable storage, constraint pipeline, and domain events |
@hfu.digital/coursekit-react | Frontend library with headless hooks and pre-styled schedule components |
Key Features
- Recurring Events — RFC 5545 RRULE support with exceptions (cancel, modify, add occurrences)
- Conflict Detection — Pluggable constraint pipeline detecting overlaps, capacity issues, and availability violations
- Availability Management — Hard/soft availability rules for instructors and rooms with free-slot search
- Pluggable Storage — Bring your own database via abstract storage classes (Prisma adapters included)
- Domain Events — Event-driven architecture with
@nestjs/event-emitterintegration - Academic Periods — Semester, holiday, exam, and break period modeling with hierarchy
- Headless-First Frontend — Use hooks for full control, or drop in
TimetableGridandEventCardcomponents - Dry-Run Conflict Checks — Preview conflicts before committing schedule changes
- Structural Typing — Backend never imports
@prisma/client— adapters handle all ORM-specific logic