How openkku/cp-examseat-backend works
CP Exam Seat is a Go JSON API for student exam-seat lookup, room rosters and layouts, statistics, and calendar feeds, with protected administrative data management. The main student workflow routes a request through a domain controller and service to exam data, then returns a view; room exploration also exposes cascading filter options. A separate import workflow extracts PDF, spreadsheet, or JSON seating data into SQLite, while reload refreshes in-memory data and response caches. The room-config tool edits room metadata and layouts. Unsampled capabilities and layer links follow the README; uncertain implementation details are omitted.
Main entry points: controllers API Controllers · app.go Application Wiring · sqlite Exam Database · exam_service.go Exam Service
Components 24
API and Views
- API Router
internal/routes/routes.go - API Controllers
internal/controllers - Response Views
internal/views - Response Cache
internal/views/cache.go - Calendar Feed
internal/controllers/calendar_controller.go
Domain Services
- Exam Service
internal/services/exam_service.go - Round Service
internal/services/round_service.go - Statistics Service
internal/services/stats_service.go - Room Service
internal/services/room_service.go - Domain Models
internal/models - Application Wiring
internal/app/app.go
Persistence
- Exam Database
internal/repositories/sqlite - Room Files
internal/repositories/filesystem
Administration
- Ingest Service
internal/services/ingest_service.go - Backup Service
internal/services/backup_service.go - Seat Extractors
internal/importers
Room Editor
- Editor Router
internal/routes/routes.go - Room Config API
internal/controllers/room_config_controller.go - Room Config Store
internal/repositories/filesystem - Room Editor UI
cmd/room-config/frontend/src/App.tsx
Other components
- Students
- Administrators
- Room Editors
- Migrate CLI
cmd/migrate/main.go
Connections 33
- Students → API Router: request
- API Router → API Controllers: dispatches
- API Controllers → Exam Service: queries exams
- API Controllers → Round Service: queries rounds
- API Controllers → Statistics Service: queries stats
- API Controllers → Room Service: gets rooms
- API Controllers → Response Views: renders response
- API Controllers → Response Cache: serves cached
- Exam Service → Exam Database: queries seats
- Exam Service → Room Service: checks layouts
- Round Service → Exam Database: loads rounds
- Statistics Service → Exam Database: reads exam data
- Statistics Service → Domain Models: builds analytics
- Room Service → Room Files: loads catalog
- API Controllers → Calendar Feed: serves calendar
- Calendar Feed → Exam Service: gets schedules
- Administrators → API Router: admin request
- API Controllers → Ingest Service: imports seats
- API Controllers → Backup Service: manages backups
- Ingest Service → Seat Extractors: extracts seats
- Ingest Service → Exam Database: replaces exam data
- Migrate CLI → Ingest Service: imports file
- Backup Service → Exam Database: backs up database
- API Controllers → Application Wiring: requests reload
- Application Wiring → Round Service: reloads rounds
- Application Wiring → Statistics Service: refreshes stats
- Application Wiring → Room Service: replaces catalog
- Application Wiring → Response Cache: clears caches
- Room Editors → Room Editor UI: edits layouts
- Room Editor UI → Editor Router: calls JSON API
- Editor Router → Room Config API: dispatches
- Room Config API → Room Config Store: reads and writes
- Room Config Store → Room Files: updates room files