Back to projects
Live Platform

IDAA Assessment & Testing System

Timed Exam Engine with Automated Scoring & Analytics

LaravelPHPREST APIMySQLDatabase DesignEdTechRedis
Candidates Assessed
5K+total
Auto-Grading Accuracy
99.5%
Avg Scoring Time
<2sec
Question Bank
10K+items

Enterprise evaluation and skill testing platform for candidate examinations, automated scoring, real-time result analytics, and structured performance reporting. Handles server-authoritative timed sessions to prevent tampering while grading multiple question formats instantly.

Architecture & System Design

The exam engine separates session state, grading, and analytics into distinct service layers. Every timer is enforced server-side, answers are queued for asynchronous scoring, and results are aggregated into cached analytics views for instant reporting.

Request Flow
Candidate Login
Exam Session Initialization
Server-Authoritative Timer Middleware
Answer Submission Queue
Polymorphic Grading Engine
Result Aggregation
Analytics Dashboard
  • Server-side timer enforcement with heartbeat pings to prevent client-side tampering
  • Polymorphic grading engine supporting MCQ, true/false, and rubric-based essay scoring
  • Randomized question pooling per session to reduce collusion and repeat exposure
  • Result caching layer for instant analytics dashboards without recomputation

Engineering Challenges

Preventing Timer Manipulation

Problem

Client-side countdown timers could be paused or manipulated via browser devtools, allowing candidates extra time.

Solution

Moved timer authority entirely to the server with periodic heartbeat validation and automatic answer submission the instant the server-tracked deadline expires.

Result

Zero disputed time-based grading issues across 5K+ recorded exam attempts.

Grading Heterogeneous Question Types

Problem

The system needed to grade MCQs, true/false, and rubric-scored essay answers with a single consistent pipeline.

Solution

Implemented a strategy pattern where each question type resolves its own grading strategy, decoupling scoring logic from the exam controller.

Result

Grading time dropped from manual hours to under 2 seconds per submission with 99.5% accuracy.

Concurrent Session Scaling

Problem

Large candidate cohorts sitting exams simultaneously caused database contention on answer writes.

Solution

Queued answer submissions through Redis-backed jobs and cached active session state to remove write pressure from the primary database during peak load.

Result

System now supports 500+ concurrent exam sessions without measurable lag.

Core Features

Timed Exam Engine

Server-authoritative countdown with auto-submit, session resumption, and anti-tamper heartbeat checks.

Clean Code

GradingEngine — Strategy-Based Auto Grading
1<?php
2
3namespace App\Services\Grading;
4
5use App\Models\ExamAttempt;
6
7class GradingEngine
8{
9 public function __construct(
10 private array $strategies // [questionType => GradingStrategy]
11 ) {}
12
13 public function grade(ExamAttempt $attempt): float
14 {
15 $totalScore = 0;
16
17 foreach ($attempt->answers as $answer) {
18 $strategy = $this->strategies[$answer->question->type]
19 ?? throw new \RuntimeException('No grading strategy found');
20
21 $totalScore += $strategy->score($answer);
22 }
23
24 $attempt->update([
25 'score' => $totalScore,
26 'graded_at' => now(),
27 ]);
28
29 return $totalScore;
30 }
31}