Architecture
Examora is a monorepo with three layers: client apps, Go services, and shared packages.

System Components
apps/admin: React + Umi admin console for question bank, papers, exams, and scoresapps/desktop: Tauri 2 desktop client for student exam sessionscmd/api: Go Gin API server for auth, RBAC, exam orchestration, and scoringcmd/worker: Asynq worker for programming submissionscmd/sandbox: Isolated compile/run sandbox
Core Boundaries
- Source data and frozen exam snapshots are different models
- Admin DTOs and candidate DTOs must stay separate
- User code must never execute inside the API process
- Desktop events are audit signals, not trusted proof
Delivery Model
- Admin creates source questions and papers
- Publishing an exam creates immutable snapshots
- Students fetch snapshot-based content only
- Scores are computed from snapshot data, not mutable source rows