# Attendance Module

## Purpose
QR-code-based attendance tracking for students in classroom sessions.

## Key Model — Attendance (`app/Models/Attendance.php`)

### Fields
- `user_id` — Student
- `classroom_instance_id` — Classroom session
- `status` (enum: `attended`, `missed`, `excused`)
- `scanned_at` — Timestamp of QR scan
- `marked_by` — Teacher or system

### Relationships
- `user()` → BelongsTo User (student)
- Student helper methods: `attendedSteps()`, `missedSteps()` on User model

## Controller — AttendanceController (`app/Http/Controllers/AttendanceController.php`)
- Route: `/attendance/mark/` (GET/POST)
- Handles QR code scanning and attendance marking

## QR Code Scanning
- Uses `html5-qrcode` JavaScript library
- Custom JS: `public/js/qr-scanner.js`
- Printed QR codes for attendance session

## Livewire Components
- `AttendanceTable` — Displays attendance records

## Filament Views
- QR code display, printing, and scanning views in `resources/views/attendance/`

## Related Workflows
- **[Course → Lesson → Classroom Workflow](../WORKFLOWS.md#9-course--lesson--classroom-workflow)** — Attendance is tracked during classroom sessions
