# rudra3086/codegrading architecture

> Architecture diagram of the GitHub repository rudra3086/codegrading, 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/rudra3086/codegrading
- Repository: https://github.com/rudra3086/codegrading

## Overview

Code Dashboard is a role-based programming education platform: students access practicals, write and run code, and submit work; teachers manage batches and practicals and grade submissions; administrators manage platform records. The frontend routes users to role-specific dashboards, while the Express backend handles authentication, course data, submissions, grading, and server-side execution. Student code also has an in-browser execution path and a JDBC-style database explorer. Sampled backend excerpts are incomplete, so uncertain endpoint-to-screen wiring is omitted.

Main entry points: [`frontend/src/App.jsx`](https://github.com/rudra3086/codegrading/blob/main/frontend/src/App.jsx) (App Router), [`backend/server.js`](https://github.com/rudra3086/codegrading/blob/main/backend/server.js) (Express API), [`frontend/src/pages/StudentDashboard.jsx`](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/StudentDashboard.jsx) (Student Dashboard), [`frontend/src/pages/Login.jsx`](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/Login.jsx) (Login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Dashboard UI"]
  node_app["App Router<br/>[App.jsx]"]
  node_login["Login<br/>[Login.jsx]"]
  node_sidebar["Sidebar<br/>[Sidebar.jsx]"]
end

subgraph group_course["Course Workflow"]
  node_student["Student Dashboard"]
  node_teacher["Teacher Dashboard"]
  node_admin["Admin Dashboard<br/>[AdminDashboard.jsx]"]
end

subgraph group_runtime["Code Runtime"]
  node_clientrun["Browser Runner<br/>[clientRunner.js]"]
  node_dbexplorer["Database Explorer"]
  node_monaco["Monaco Editor<br/>[main.jsx]"]
  node_compiler["Local Toolchain"]
end

subgraph group_backend["Backend Services"]
  node_api["Express API<br/>[server.js]"]
  node_records[("Prisma Records<br/>[server.js]")]
  node_proxy["API Proxy<br/>[worker.js]"]
end

node_user(("User"))
node_backendhost["Backend Host"]

node_user -->|"opens"| node_app
node_app -->|"shows"| node_login
node_app -->|"renders"| node_sidebar
node_app -->|"routes student"| node_student
node_app -->|"routes teacher"| node_teacher
node_app -->|"routes admin"| node_admin
node_login -->|"authenticates"| node_api
node_app -->|"changes password"| node_api
node_student -->|"loads and submits"| node_api
node_teacher -->|"manages and grades"| node_api
node_admin -->|"manages records"| node_api
node_api -->|"reads and writes"| node_records
node_student -->|"edits code"| node_monaco
node_student -->|"runs code"| node_clientrun
node_clientrun -.->|"exposes database UI"| node_dbexplorer
node_api -->|"spawns tools"| node_compiler
node_user -.->|"sends requests"| node_proxy
node_proxy -.->|"forwards API"| node_backendhost

click node_app "https://github.com/rudra3086/codegrading/blob/main/frontend/src/App.jsx"
click node_login "https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/Login.jsx"
click node_sidebar "https://github.com/rudra3086/codegrading/blob/main/frontend/src/components/Sidebar.jsx"
click node_student "https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/StudentDashboard.jsx"
click node_teacher "https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/TeacherDashboard.jsx"
click node_admin "https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/AdminDashboard.jsx"
click node_api "https://github.com/rudra3086/codegrading/blob/main/backend/server.js"
click node_records "https://github.com/rudra3086/codegrading/blob/main/backend/server.js"
click node_clientrun "https://github.com/rudra3086/codegrading/blob/main/frontend/src/utils/clientRunner.js"
click node_dbexplorer "https://github.com/rudra3086/codegrading/blob/main/frontend/src/components/DatabaseExplorer.jsx"
click node_monaco "https://github.com/rudra3086/codegrading/blob/main/frontend/src/main.jsx"
click node_proxy "https://github.com/rudra3086/codegrading/blob/main/worker.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_app,node_login,node_sidebar,node_user toneBlue
class node_student,node_teacher,node_admin toneAmber
class node_clientrun,node_dbexplorer,node_monaco,node_compiler toneMint
class node_api,node_records,node_proxy toneRose
class node_backendhost toneIndigo
```

## Components

### Dashboard UI

- [App Router](https://github.com/rudra3086/codegrading/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Sidebar](https://github.com/rudra3086/codegrading/blob/main/frontend/src/components/Sidebar.jsx): `frontend/src/components/Sidebar.jsx`

### Course Workflow

- [Student Dashboard](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/StudentDashboard.jsx): `frontend/src/pages/StudentDashboard.jsx`
- [Teacher Dashboard](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/TeacherDashboard.jsx): `frontend/src/pages/TeacherDashboard.jsx`
- [Admin Dashboard](https://github.com/rudra3086/codegrading/blob/main/frontend/src/pages/AdminDashboard.jsx): `frontend/src/pages/AdminDashboard.jsx`

### Code Runtime

- [Browser Runner](https://github.com/rudra3086/codegrading/blob/main/frontend/src/utils/clientRunner.js): `frontend/src/utils/clientRunner.js`
- [Database Explorer](https://github.com/rudra3086/codegrading/blob/main/frontend/src/components/DatabaseExplorer.jsx): `frontend/src/components/DatabaseExplorer.jsx`
- [Monaco Editor](https://github.com/rudra3086/codegrading/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- **Local Toolchain**

### Backend Services

- [Express API](https://github.com/rudra3086/codegrading/blob/main/backend/server.js): `backend/server.js`
- [Prisma Records](https://github.com/rudra3086/codegrading/blob/main/backend/server.js): `backend/server.js`
- [API Proxy](https://github.com/rudra3086/codegrading/blob/main/worker.js): `worker.js`

### Other components

- **User**
- **Backend Host**

## Connections

- User → App Router: opens
- App Router → Login: shows
- App Router → Sidebar: renders
- App Router → Student Dashboard: routes student
- App Router → Teacher Dashboard: routes teacher
- App Router → Admin Dashboard: routes admin
- Login → Express API: authenticates
- App Router → Express API: changes password
- Student Dashboard → Express API: loads and submits
- Teacher Dashboard → Express API: manages and grades
- Admin Dashboard → Express API: manages records
- Express API → Prisma Records: reads and writes
- Student Dashboard → Monaco Editor: edits code
- Student Dashboard → Browser Runner: runs code
- Browser Runner → Database Explorer: exposes database UI
- Express API → Local Toolchain: spawns tools
- User → API Proxy: sends requests
- API Proxy → Backend Host: forwards API
