Skip to content

Check-ins

API fact source: Django backend generated docs

Why Check-Ins Attach To Course Occurrences

checkins owns check-in sessions and student records for course occurrences. It depends on course and user class data and does not maintain an independent schedule system.

Code entry:

  • backend/apps/checkins/models/
  • backend/apps/checkins/views/
  • backend/apps/checkins/serializers/
  • backend/apps/checkins/services/

Sessions And Rosters

Check-in sessions attach to CourseOccurrence, and creating a session for the same occurrence is idempotent. This keeps teachers, students, signage devices, and course queries aligned on the same class-session fact.

Rosters are derived by matching course class names to user student_class. That string-based match means course class fields and user class fields affect check-in coverage.

Non-admin users can only manage check-in data for their own courses; students can only see their own check-ins and schedule.

Time-Dependent Behavior

  • Automatic status transitions depend on class period times, timezone behavior, and the frontend daily view.
  • Check-in status is time-dependent; tests cover boundary times.

Reserved Capabilities

  • A new check-in method needs method, source, confidence, and operation-log behavior.
  • Signage devices do not currently write check-ins. Adding that requires device identity, student identity, and replay protection.
  • Face-recognition fields exist, but face-service is not yet part of the main check-in flow.