← Back to Portfolio Architecture Animation

Live Submission Pipeline

21 steps · 6 phases · runs for every code submission during the exam

def add(a, b): return a + b   →  question_id=7, language="python", student_id=1
Press Play or → to begin
Browser submits code → Django validates → queues execution → 201 response → SSE stream → Celery runs Docker sandbox → result pushed to browser.
🌐
Browser
Student UI
⚙️
Django
API Server
Redis
Queue + Cache
🔧
Celery
Worker
🐳
Docker
Code Runner
🗃️
Postgres
Permanent Store
Step of
Press Play or → to begin
Browser submits code → Django validates attempt limits → writes to Postgres → pushes execution job to Redis → returns 201 immediately → SSE stream delivers live status → Celery runs Docker sandbox → result saved and pushed to browser.
Data / Command
Speed:
POST-EXAM — runs once when exam closes

Plagiarism Detection Flow

14 steps · 3 phases · triggered once at exam close, runs entirely in background

Press Play or → to begin
Trainer closes exam → Django pre_save signal fires → Celery batch task orchestrates Phase 1 (behavioural, sync) then Phase 2 (similarity, async per question).
👤
Trainer
ExamOpsView
⚙️
Django
API Server
Redis
Queue + Cache
🔧
Celery
Worker
🗃️
Postgres
Permanent Store
Step of
Press Play or → to begin
Trainer closes exam → pre_save signal fires → Celery batch task orchestrates Phase 1 (behavioural scoring, synchronous) then Phase 2 (TF-IDF similarity, async per question with 30s stagger).
Data / Command
Speed: