How lakshyamurali153-source/exam works
ExamGuard records and reviews online-exam monitoring events. The primary workflow is a user submitting a session or event through the React interface: Flask checks and normalizes detections, merges repeated detections when requested, and persists closed or direct events in MySQL for filtered review. The backend also exposes an event-ingestion route that invokes the Kafka producer. Kafka consumption and broader integrations are documented as planned; the sampled code does not establish their end-to-end wiring.
Main entry points: app.py Flask routes · normalizer.py Detection normalizer · event_aggregator.py Detection aggregator · event_repository.py Event repository
Components 17
Review Interface
- Events dashboard
frontend/src/App.jsx
Backend API
- Flask routes
backend/app.py - Application logging
backend/logging_config.py
Event Processing
- Detection normalizer
backend/normalizer.py - Event validation
backend/event_validation.py - Detection aggregator
backend/event_aggregator.py - Timestamp utilities
backend/timeutils.py - Processing settings
backend/config.py
Persistence and Streaming
- Event repository
backend/event_repository.py - Session repository
backend/session_repository.py - Database access
backend/database.py - Kafka producer
backend/producer.py - Kafka consumer
backend/consumer.py - Kafka settings
backend/kafka_config.py
Other components
- Exam operator
- MySQL
- Kafka broker
Connections 24
- Exam operator → Events dashboard: uses
frontend/src/App.jsx - Events dashboard → Flask routes: sends requests
frontend/src/App.jsx - Flask routes → Detection normalizer: normalizes detections
backend/app.py - Flask routes → Event validation: checks session access
backend/app.py - Detection normalizer → Event validation: validates input
backend/normalizer.py - Flask routes → Detection aggregator: merges detections
backend/app.py - Detection aggregator → Detection normalizer: builds events
backend/event_aggregator.py - Flask routes → Event repository: saves and queries
backend/app.py - Flask routes → Session repository: manages sessions
backend/app.py - Flask routes → Kafka producer: publishes ingestion
backend/app.py - Flask routes → Application logging: logs requests
backend/app.py - Detection normalizer → Timestamp utilities: parses timestamps
backend/normalizer.py - Event repository → Timestamp utilities: converts timestamps
backend/event_repository.py - Session repository → Timestamp utilities: converts timestamps
backend/session_repository.py - Event repository → Database access: executes queries
backend/event_repository.py - Session repository → Database access: executes queries
backend/session_repository.py - Database access → MySQL: opens connections
backend/database.py - Detection normalizer → Processing settings: reads threshold
backend/normalizer.py - Event validation → Processing settings: reads tolerance
backend/event_validation.py - Detection aggregator → Processing settings: reads event gap
backend/event_aggregator.py - Kafka producer → Kafka settings: loads settings
backend/producer.py - Kafka consumer → Kafka settings: loads settings
backend/consumer.py - Kafka producer → Kafka broker: streams events
- Kafka broker → Kafka consumer: delivers events