Extend ExamNova without weakening assessment trust.
Start with the boundary affected by your change. Each module names the responsibility, data flow, invariants, failure modes, safe extension approach, required tests, and release gate.
MaintainerIntegratorSecurity reviewer
Architecture
Keep the public webroot narrow, controllers thin, domain decisions testable, tenant context explicit, and private files authorized.
Self-hosted deployment layout. The public webroot exposes only public assets while application code, private storage, and environment configuration stay outside it.
Tenant and permission rules
Authentication, institute membership, permission, ownership, and record state are separate required checks.
Tenant authorization request flow. Every protected request must pass authentication, institute membership, permission, ownership, and record-state checks.
Assessment state
Revisions, snapshots, attempts, evidence, marks, moderation, publication, and documents preserve the decisions that produced a result.