During the development of an exam platform for a technical university, we faced requirements: 10,000 students, 200 subjects, 50 question types, peak load of 500 simultaneous sessions. The system must guarantee data integrity during failures and prevent cheating. The cost of error is not just a grade—it's the institution's reputation or certification of a specialist. Here's how we solve these challenges in practice.
We design a modular architecture where each exam type is isolated in its own service: auto-graded tests, manually reviewed assignments, adaptive (CAT) tests, and proctored exams. This approach simplifies scaling and adding new types. For example, for one client we implemented support for 12 programming languages in coding tasks, each in a Docker container with isolation.
Exam types and their components
| Type | Features | Questions per typical test |
|---|---|---|
| Auto-graded | Tests, multiple choice, short answers | 30–60 |
| Manual review | Essays, coding tasks, case studies | 3–10 |
| Adaptive (CAT) | Difficulty adjusts to answers | 15–25 (30% fewer than linear) |
| Proctored | With observer (online or offline) | any |
| Open-book | Materials allowed | any |
Each type requires its own components: for essays—an editor with plagiarism check, for coding tasks—code execution in an isolated container. The question bank ranges from 500 to 5,000 items.
How is cheating prevented?
Kiosk mode blocks 99% of tab-switching attempts. Implementation via document.onfullscreenchange + detecting visibilitychange:
document.addEventListener('visibilitychange', () => { if (document.hidden && examInProgress) { recordViolation('tab_switch', { timestamp: Date.now() }); } }); Randomization: question order and answer options are shuffled for each examinee—shuffle_seed is generated at start and persisted. Probability of two students getting identical variants is less than 1 in a million. Time limits are stored server-side, client syncs every 30 seconds. On timeout—automatic submission. This set of measures reduces violations by 80% compared to a simple timer.
How does adaptive testing work?
Computer Adaptive Testing (CAT) selects questions based on estimated ability. The algorithm uses Item Response Theory (IRT), according to Item Response Theory (Wikipedia): each question in the bank has parameters for difficulty (b), discrimination (a), and guessing probability (c). We implement the 3PL model.
Process:
- Start with a medium question (θ = 0).
- Correct answer → next question harder.
- Incorrect → easier.
- Ability estimate (θ) recalculated after each answer.
We use the catirt library (R) or a custom implementation. The result is an accurate assessment in 15–25 questions instead of 40–60 for a linear test, reducing time by 40%.
Example of estimating question parameters via IRT
For each question, the three-parameter logistic function is computed: P(θ) = c + (1-c) / (1 + exp(-1.7*a*(θ-b))). Parameters are estimated using maximum likelihood on a calibration sample (at least 200 responses per question).Reliability and recovery
Exams must not be lost. Auto-saving current answers every 30 seconds (POST to server). On connection loss—resume after reconnection from the last saved state. In practice, 99.9% of sessions finish without data loss. For technical issues—a procedure for reopening exam sessions. Answers are stored in exam_answers with submitted_at, separate from the final score.
Online proctoring
Two levels:
| Level | Technology | Detection accuracy | Relative cost |
|---|---|---|---|
| AI proctoring | MediaPipe/OpenCV self-hosted | 70% | 1x |
| Live proctoring | WebRTC | 95% | 3x |
| Hybrid (AI + live) | Combination | 95% | 1.5x |
A self-hosted solution using MediaPipe/OpenCV reduces costs by 3x compared to commercial services. Webcam data is recorded and analyzed post-factum, reducing server load during the exam.
What’s included in the result
The basic package includes: question bank, auto-grading system, anti-cheat module, certificate generation, and deployment documentation plus API docs. The extended package additionally includes adaptive testing (CAT), proctoring, LMS integration, custom question types, and training for up to 5 staff. We always provide full source code with no restrictions and a 3-month warranty.
Development stages
- Analytics: gather requirements, load profiling, architecture design.
- Design: UI prototype, data model, API specification.
- Implementation: iterative development with demos every 2 weeks.
- Testing: load testing up to 1,000 simultaneous sessions, security audit.
- Deployment: deploy on your infrastructure and hand over documentation.
Timelines and scope of work
| Package | Timeline | Scope |
|---|---|---|
| Basic | 3–4 months | Question bank, timer, auto-grading, anti-cheat, certificates |
| Extended | 5–8 months | Everything in basic + proctoring, CAT, essay review, integrations |
The cost includes: documentation, source code, training for up to 5 staff, 3-month warranty. Specific pricing is determined individually after requirements analysis.
Our expertise
5+ years of experience in developing high-load educational platforms. 30+ projects for universities and online schools with audiences from 500 to 50,000 users. Stack: React/Next.js, Node.js/Nest.js, PostgreSQL, Redis, Docker, Kubernetes. We’ll assess your project for free—contact us for a consultation and receive demo access to a prototype.







