How hamnmni0/examguard works
ExamGuard supports instructor account access, exam-session administration, student camera monitoring, live proctoring, and post-session review of flagged events and recordings. The main workflow is an instructor creating a session and sharing its link; a student joins, streams camera frames and recording chunks, and the backend detects and stores events for live viewing and later reporting. Backend wiring is grounded in sampled source; several page and domain implementations were not sampled, so uncertain internal links are omitted.
Main entry points: sessions.py Session API · App.jsx Route application · StudentMonitor.jsx Student monitor · sockets.py Live socket handlers
Components 21
Web app
- Route application
frontend/src/App.jsx - Home page
frontend/src/pages/Home.jsx
Instructor access
- Login page
frontend/src/pages/Login.jsx - Signup page
frontend/src/pages/Signup.jsx - Protected routes
frontend/src/ProtectedRoute.jsx - Account screens
frontend/src/pages/Login.jsx - Account API
backend/app/auth.py
Exam sessions
- Session dashboard
frontend/src/pages/Dashboard.jsx - Flask application
backend/run.py - Session API
backend/app/sessions.py - Relational data models
backend/app/models.py
Monitoring and review
- Student monitor
frontend/src/pages/StudentMonitor.jsx - Live view
frontend/src/pages/LiveView.jsx - Session report
frontend/src/pages/SessionReport.jsx - Live socket handlers
backend/app/sockets.py - Frame detection
backend/app/detection.py - Suspicion scoring
backend/app/scorer.py - Recording files
backend/app/sessions.py
Other components
- Instructor
- Student
- Browser camera
Connections 36
- Route application → Home page: routes to
- Route application → Student monitor: routes to
- Route application → Session dashboard: routes to
- Route application → Login page: routes to
- Route application → Signup page: routes to
- Route application → Session report: routes to
- Route application → Live view: routes to
- Session dashboard → Protected routes: protected by
- Session report → Protected routes: protected by
- Live view → Protected routes: protected by
- Instructor → Login page: signs in
- Instructor → Signup page: registers
- Login page → Account API: requests token
- Signup page → Account API: creates account
- Flask application → Account API: registers routes
- Flask application → Session API: registers routes
- Flask application → Live socket handlers: registers handlers
- Account API → Relational data models: reads and writes
- Session dashboard → Session API: manages sessions
- Session API → Relational data models: reads and writes
- Instructor → Session dashboard: administers exams
- Session dashboard → Student monitor: shares monitor link
- Student → Student monitor: joins exam
- Student monitor → Browser camera: captures video
- Student monitor → Session API: joins and uploads chunks
- Session API → Recording files: appends and serves
- Student monitor → Live socket handlers: sends frames
- Live view → Live socket handlers: watches session
- Live socket handlers → Frame detection: analyzes frames
- Live socket handlers → Relational data models: stores flagged events
- Live socket handlers → Live view: emits live updates
- Session report → Session API: fetches details
- Session API → Suspicion scoring: scores on end
- Suspicion scoring → Relational data models: reads event data
- Session API → Relational data models: loads report data
- Session report → Recording files: downloads recording