# pavitram239/automatic-code-assessment architecture

> Architecture diagram of the GitHub repository pavitram239/automatic-code-assessment, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pavitram239/automatic-code-assessment
- Repository: https://github.com/pavitram239/automatic-code-assessment

## Overview

Automatic Code Assessment Platform is a MERN application for solving and managing programming assessments. A student signs in, opens an assigned problem, submits code for execution, reviews test results, and can track submissions or participate in contests. Faculty and administrators manage users, approvals, problems, and contests. The README documents Judge0-backed execution and profile/history capabilities; sampled source confirms the API entry point, compile routes, and several persistence operations. Other feature links reflect the documented product and repository paths; their implementation wiring was not sampled.

Main entry points: [`server/app.js`](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/app.js) (Express API), [`server/routes/submission.router.js`](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/submission.router.js) (Submission Routes), [`client/src/App.jsx`](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/App.jsx) (Web Application), [`server/routes/problem.router.js`](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/problem.router.js) (Problem Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Student and Staff UI"]
  node_webapp["Web Application<br/>[App.jsx]"]
  node_problem_ui["Problem Workspace<br/>[Problem.jsx]"]
  node_editor["Code Editor<br/>[CodeEditor.jsx]"]
  node_history_ui["History and Profile<br/>[History.jsx]"]
  node_contest_ui["Contest Views<br/>[Contest.jsx]"]
  node_staff_ui["Staff Views<br/>[Faculty.jsx]"]
end

subgraph group_api["API and Identity"]
  node_api_app["Express API<br/>[app.js]"]
  node_auth_routes["Authentication Routes<br/>[auth.js]"]
  node_auth_controller["Authentication Logic<br/>[auth.js]"]
end

subgraph group_assessment["Assessment Workflow"]
  node_problem_routes["Problem Routes<br/>[problem.router.js]"]
  node_problem_controller["Problem Management"]
  node_compile_routes["Compile Routes<br/>[compileRoutes.js]"]
  node_compile_controller["Code Execution API"]
  node_execution_worker["Execution Worker<br/>[codeexecution.js]"]
  node_submission_routes["Submission Routes"]
  node_submission_controller["Submission Logic"]
  node_contest_routes["Contest Routes<br/>[contests.js]"]
  node_contest_controller["Contest Management"]
end

subgraph group_management["Administration"]
  node_staff_routes["Staff Routes<br/>[faculty.router.js]"]
  node_staff_controller["Faculty Workflow"]
  node_admin_routes["Admin Routes<br/>[admin.router.js]"]
  node_admin_controller["Admin Management"]
end

node_student(("Student"))
node_staff(("Faculty and Admin"))
node_judge0{{"Judge0"}}
node_mongo[("MongoDB")]

node_student -->|"uses"| node_webapp
node_staff -->|"uses"| node_webapp
node_webapp -->|"API requests"| node_api_app
node_api_app -->|"mounts"| node_auth_routes
node_api_app -->|"mounts"| node_problem_routes
node_api_app -->|"mounts"| node_compile_routes
node_api_app -->|"mounts"| node_submission_routes
node_api_app -->|"mounts"| node_contest_routes
node_api_app -->|"mounts"| node_staff_routes
node_api_app -->|"mounts"| node_admin_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_problem_routes -->|"dispatches"| node_problem_controller
node_compile_routes -->|"dispatches"| node_compile_controller
node_submission_routes -.->|"dispatches"| node_submission_controller
node_contest_routes -.->|"dispatches"| node_contest_controller
node_staff_routes -.->|"dispatches"| node_staff_controller
node_admin_routes -.->|"dispatches"| node_admin_controller
node_problem_ui -->|"opens editor"| node_editor
node_editor -->|"submits code"| node_compile_routes
node_compile_controller -.->|"requests execution"| node_judge0
node_judge0 -.->|"runs jobs"| node_execution_worker
node_problem_controller -->|"reads and writes"| node_mongo
node_contest_controller -->|"reads and writes"| node_mongo
node_submission_routes -->|"reads and writes"| node_mongo
node_staff_controller -->|"reads and writes"| node_mongo
node_auth_controller -.->|"reads and writes"| node_mongo
node_staff_ui -.->|"manages accounts"| node_staff_routes
node_contest_ui -.->|"manages contests"| node_contest_routes
node_history_ui -.->|"loads history"| node_submission_routes
node_problem_ui -.->|"loads problems"| node_problem_routes

click node_webapp "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/App.jsx"
click node_problem_ui "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Problem/Problem.jsx"
click node_editor "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/CodeEditor/CodeEditor.jsx"
click node_history_ui "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/History.jsx"
click node_contest_ui "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Contest/Contest.jsx"
click node_staff_ui "https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Faculty/Faculty.jsx"
click node_api_app "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/app.js"
click node_auth_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/auth.js"
click node_auth_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/auth.js"
click node_problem_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/problem.router.js"
click node_problem_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/problem.controller.js"
click node_compile_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/compileRoutes.js"
click node_compile_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/compileController.js"
click node_execution_worker "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/worker/codeexecution.js"
click node_submission_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/submission.router.js"
click node_submission_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/submission.controller.js"
click node_contest_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/contests.js"
click node_contest_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/contestController.js"
click node_staff_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/faculty.router.js"
click node_staff_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/faculty.controller.js"
click node_admin_routes "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/admin.router.js"
click node_admin_controller "https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/admin.controller.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_problem_ui,node_editor,node_history_ui,node_contest_ui,node_staff_ui toneBlue
class node_api_app,node_auth_routes,node_auth_controller,node_mongo toneAmber
class node_problem_routes,node_problem_controller,node_compile_routes,node_compile_controller,node_execution_worker,node_submission_routes,node_submission_controller,node_contest_routes,node_contest_controller toneMint
class node_staff_routes,node_staff_controller,node_admin_routes,node_admin_controller toneRose
class node_student,node_staff,node_judge0 toneIndigo
```

## Components

### Student and Staff UI

- [Web Application](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/App.jsx): `client/src/App.jsx`
- [Problem Workspace](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Problem/Problem.jsx): `client/src/componets/Problem/Problem.jsx`
- [Code Editor](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/CodeEditor/CodeEditor.jsx): `client/src/componets/CodeEditor/CodeEditor.jsx`
- [History and Profile](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/History.jsx): `client/src/componets/History.jsx`
- [Contest Views](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Contest/Contest.jsx): `client/src/componets/Contest/Contest.jsx`
- [Staff Views](https://github.com/pavitram239/automatic-code-assessment/blob/master/client/src/componets/Faculty/Faculty.jsx): `client/src/componets/Faculty/Faculty.jsx`

### API and Identity

- [Express API](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/app.js): `server/app.js`
- [Authentication Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/auth.js): `server/routes/auth.js`
- [Authentication Logic](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/auth.js): `server/controllers/auth.js`

### Assessment Workflow

- [Problem Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/problem.router.js): `server/routes/problem.router.js`
- [Problem Management](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/problem.controller.js): `server/controllers/problem.controller.js`
- [Compile Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/compileRoutes.js): `server/routes/compileRoutes.js`
- [Code Execution API](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/compileController.js): `server/controllers/compileController.js`
- [Execution Worker](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/worker/codeexecution.js): `server/worker/codeexecution.js`
- [Submission Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/submission.router.js): `server/routes/submission.router.js`
- [Submission Logic](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/submission.controller.js): `server/controllers/submission.controller.js`
- [Contest Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/contests.js): `server/routes/contests.js`
- [Contest Management](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/contestController.js): `server/controllers/contestController.js`

### Administration

- [Staff Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/faculty.router.js): `server/routes/faculty.router.js`
- [Faculty Workflow](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/faculty.controller.js): `server/controllers/faculty.controller.js`
- [Admin Routes](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/routes/admin.router.js): `server/routes/admin.router.js`
- [Admin Management](https://github.com/pavitram239/automatic-code-assessment/blob/master/server/controllers/admin.controller.js): `server/controllers/admin.controller.js`

### Other components

- **Student**
- **Faculty and Admin**
- **Judge0**
- **MongoDB**

## Connections

- Student → Web Application: uses
- Faculty and Admin → Web Application: uses
- Web Application → Express API: API requests
- Express API → Authentication Routes: mounts
- Express API → Problem Routes: mounts
- Express API → Compile Routes: mounts
- Express API → Submission Routes: mounts
- Express API → Contest Routes: mounts
- Express API → Staff Routes: mounts
- Express API → Admin Routes: mounts
- Authentication Routes → Authentication Logic: dispatches
- Problem Routes → Problem Management: dispatches
- Compile Routes → Code Execution API: dispatches
- Submission Routes → Submission Logic: dispatches
- Contest Routes → Contest Management: dispatches
- Staff Routes → Faculty Workflow: dispatches
- Admin Routes → Admin Management: dispatches
- Problem Workspace → Code Editor: opens editor
- Code Editor → Compile Routes: submits code
- Code Execution API → Judge0: requests execution
- Judge0 → Execution Worker: runs jobs
- Problem Management → MongoDB: reads and writes
- Contest Management → MongoDB: reads and writes
- Submission Routes → MongoDB: reads and writes
- Faculty Workflow → MongoDB: reads and writes
- Authentication Logic → MongoDB: reads and writes
- Staff Views → Staff Routes: manages accounts
- Contest Views → Contest Routes: manages contests
- History and Profile → Submission Routes: loads history
- Problem Workspace → Problem Routes: loads problems
