# avinash111921/campussync architecture

> Architecture diagram of the GitHub repository avinash111921/campussync, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/avinash111921/campussync
- Repository: https://github.com/avinash111921/campussync

## Overview

This repository implements a student academic-management system with separate student and administrator web apps backed by an Express API. Students sign in, view dashboard, course, grade, and profile information; administrators manage students and courses, enroll students, and maintain grades. The API handles authentication and domain operations over MongoDB-backed models. The graph captures documented route wiring and sampled calls; frontend-to-backend HTTP links are shown as unverified because the excerpts do not establish the complete network configuration.

Main entry points: [`backend/src/routes/student.routes.js`](https://github.com/avinash111921/campussync/blob/main/backend/src/routes/student.routes.js) (Student Routes), [`admin/src/App.jsx`](https://github.com/avinash111921/campussync/blob/main/admin/src/App.jsx) (Admin Routes), [`backend/server.js`](https://github.com/avinash111921/campussync/blob/main/backend/server.js) (API Server), [`frontend/src/App.jsx`](https://github.com/avinash111921/campussync/blob/main/frontend/src/App.jsx) (Student Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_student_app["Student App"]
  node_student_routes["Student Routes<br/>[App.jsx]"]
  node_student_auth["Authentication<br/>[AuthContexts.jsx]"]
  node_student_data["Student Data<br/>[StudentData.jsx]"]
  node_student_dashboard["Dashboard"]
  node_student_grades["Grades<br/>[GradesContent.jsx]"]
  node_student_courses["Courses<br/>[CoursesContent.jsx]"]
end

subgraph group_admin_app["Admin App"]
  node_admin_routes["Admin Routes<br/>[App.jsx]"]
  node_admin_auth["Admin Context<br/>[AdminContext.jsx]"]
  node_admin_students["Student Management"]
  node_admin_courses["Course Management"]
  node_admin_enroll["Enrollment<br/>[EnrollStudent.jsx]"]
  node_admin_grades["Grade Management<br/>[CGPAmanagment.jsx]"]
end

subgraph group_api["Backend API"]
  node_api_server["API Server<br/>[server.js]"]
  node_user_routes["User Routes<br/>[user.routes.js]"]
  node_student_api_routes["Student Routes<br/>[student.routes.js]"]
  node_course_api_routes["Course Routes<br/>[course.routes.js]"]
  node_cgpa_api_routes["CGPA Routes<br/>[cgpa.routes.js]"]
  node_user_controller["User Operations"]
  node_student_controller["Student Operations"]
  node_course_controller["Course Operations"]
  node_cgpa_controller["Grade Calculation"]
  node_auth_middleware["Authentication Guard"]
  node_admin_middleware["Admin Guard"]
end

subgraph group_data["Academic Data"]
  node_database[("MongoDB<br/>[db.js]")]
  node_student_model["Student Records<br/>[student.models.js]"]
  node_course_model["Course Records<br/>[Course.models.js]"]
  node_cgpa_model["Grade Records<br/>[Cgpa.models.js]"]
  node_user_model["User Records<br/>[user.models.js]"]
end

node_student(("Student"))
node_admin(("Administrator"))

node_student -->|"uses"| node_student_routes
node_student_routes -->|"checks login"| node_student_auth
node_student_routes -->|"routes to"| node_student_dashboard
node_student_routes -->|"routes to"| node_student_courses
node_student_routes -->|"routes to"| node_student_grades
node_student_auth -->|"clears data"| node_student_data
node_student_dashboard -->|"reads"| node_student_data
node_student_grades -->|"reads"| node_student_data
node_student_auth -.->|"requests auth"| node_user_routes
node_student_data -.->|"requests records"| node_student_api_routes
node_admin -->|"uses"| node_admin_routes
node_admin_routes -->|"checks session"| node_admin_auth
node_admin_routes -->|"routes to"| node_admin_students
node_admin_routes -->|"routes to"| node_admin_courses
node_admin_routes -->|"routes to"| node_admin_enroll
node_admin_routes -->|"routes to"| node_admin_grades
node_admin_auth -.->|"fetches students"| node_student_api_routes
node_admin_auth -.->|"fetches courses"| node_course_api_routes
node_admin_enroll -.->|"enrolls student"| node_student_api_routes
node_admin_students -.->|"manages records"| node_student_api_routes
node_admin_courses -.->|"manages courses"| node_course_api_routes
node_admin_grades -.->|"manages grades"| node_cgpa_api_routes
node_api_server -->|"mounts"| node_user_routes
node_api_server -->|"mounts"| node_student_api_routes
node_api_server -->|"mounts"| node_course_api_routes
node_api_server -->|"mounts"| node_cgpa_api_routes
node_api_server -->|"connects"| node_database
node_user_routes -->|"dispatches"| node_user_controller
node_user_routes -->|"guards routes"| node_auth_middleware
node_student_api_routes -->|"dispatches"| node_student_controller
node_student_api_routes -->|"guards routes"| node_admin_middleware
node_course_api_routes -->|"dispatches"| node_course_controller
node_course_api_routes -->|"guards routes"| node_admin_middleware
node_cgpa_api_routes -->|"dispatches"| node_cgpa_controller
node_cgpa_api_routes -->|"guards routes"| node_auth_middleware
node_cgpa_api_routes -->|"guards routes"| node_admin_middleware
node_auth_middleware -->|"checks identity"| node_user_model
node_student_controller -->|"reads and writes"| node_student_model
node_student_controller -->|"reads"| node_course_model
node_student_controller -->|"reads"| node_cgpa_model
node_course_controller -->|"reads and writes"| node_course_model
node_course_controller -->|"updates enrollments"| node_student_model
node_cgpa_controller -->|"reads credits"| node_course_model
node_cgpa_controller -->|"reads and writes"| node_cgpa_model
node_cgpa_controller -->|"validates student"| node_student_model

click node_student_routes "https://github.com/avinash111921/campussync/blob/main/frontend/src/App.jsx"
click node_student_auth "https://github.com/avinash111921/campussync/blob/main/frontend/src/context/AuthContexts.jsx"
click node_student_data "https://github.com/avinash111921/campussync/blob/main/frontend/src/context/StudentData.jsx"
click node_student_dashboard "https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/DashboardContent.jsx"
click node_student_grades "https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/GradesContent.jsx"
click node_student_courses "https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/CoursesContent.jsx"
click node_admin_routes "https://github.com/avinash111921/campussync/blob/main/admin/src/App.jsx"
click node_admin_auth "https://github.com/avinash111921/campussync/blob/main/admin/src/context/AdminContext.jsx"
click node_admin_students "https://github.com/avinash111921/campussync/blob/main/admin/src/pages/StudentManagment.jsx"
click node_admin_courses "https://github.com/avinash111921/campussync/blob/main/admin/src/pages/CourseManagement.jsx"
click node_admin_enroll "https://github.com/avinash111921/campussync/blob/main/admin/src/pages/EnrollStudent.jsx"
click node_admin_grades "https://github.com/avinash111921/campussync/blob/main/admin/src/pages/CGPAmanagment.jsx"
click node_api_server "https://github.com/avinash111921/campussync/blob/main/backend/server.js"
click node_user_routes "https://github.com/avinash111921/campussync/blob/main/backend/src/routes/user.routes.js"
click node_student_api_routes "https://github.com/avinash111921/campussync/blob/main/backend/src/routes/student.routes.js"
click node_course_api_routes "https://github.com/avinash111921/campussync/blob/main/backend/src/routes/course.routes.js"
click node_cgpa_api_routes "https://github.com/avinash111921/campussync/blob/main/backend/src/routes/cgpa.routes.js"
click node_user_controller "https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/user.conterollers.js"
click node_student_controller "https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/student.controllers.js"
click node_course_controller "https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/courses.controllers.js"
click node_cgpa_controller "https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/cgpa.controllers.js"
click node_auth_middleware "https://github.com/avinash111921/campussync/blob/main/backend/src/middlewares/auth.middlewares.js"
click node_admin_middleware "https://github.com/avinash111921/campussync/blob/main/backend/src/middlewares/admin.middlewares.js"
click node_database "https://github.com/avinash111921/campussync/blob/main/backend/src/db/db.js"
click node_student_model "https://github.com/avinash111921/campussync/blob/main/backend/src/models/student.models.js"
click node_course_model "https://github.com/avinash111921/campussync/blob/main/backend/src/models/Course.models.js"
click node_cgpa_model "https://github.com/avinash111921/campussync/blob/main/backend/src/models/Cgpa.models.js"
click node_user_model "https://github.com/avinash111921/campussync/blob/main/backend/src/models/user.models.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_student_routes,node_student_auth,node_student_data,node_student_dashboard,node_student_grades,node_student_courses toneBlue
class node_admin_routes,node_admin_auth,node_admin_students,node_admin_courses,node_admin_enroll,node_admin_grades toneAmber
class node_api_server,node_user_routes,node_student_api_routes,node_course_api_routes,node_cgpa_api_routes,node_user_controller,node_student_controller,node_course_controller,node_cgpa_controller,node_auth_middleware,node_admin_middleware toneMint
class node_database,node_student_model,node_course_model,node_cgpa_model,node_user_model toneRose
class node_student,node_admin toneIndigo
```

## Components

### Student App

- [Student Routes](https://github.com/avinash111921/campussync/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Authentication](https://github.com/avinash111921/campussync/blob/main/frontend/src/context/AuthContexts.jsx): `frontend/src/context/AuthContexts.jsx`
- [Student Data](https://github.com/avinash111921/campussync/blob/main/frontend/src/context/StudentData.jsx): `frontend/src/context/StudentData.jsx`
- [Dashboard](https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/DashboardContent.jsx): `frontend/src/pages/DashboardContent.jsx`
- [Grades](https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/GradesContent.jsx): `frontend/src/pages/GradesContent.jsx`
- [Courses](https://github.com/avinash111921/campussync/blob/main/frontend/src/pages/CoursesContent.jsx): `frontend/src/pages/CoursesContent.jsx`

### Admin App

- [Admin Routes](https://github.com/avinash111921/campussync/blob/main/admin/src/App.jsx): `admin/src/App.jsx`
- [Admin Context](https://github.com/avinash111921/campussync/blob/main/admin/src/context/AdminContext.jsx): `admin/src/context/AdminContext.jsx`
- [Student Management](https://github.com/avinash111921/campussync/blob/main/admin/src/pages/StudentManagment.jsx): `admin/src/pages/StudentManagment.jsx`
- [Course Management](https://github.com/avinash111921/campussync/blob/main/admin/src/pages/CourseManagement.jsx): `admin/src/pages/CourseManagement.jsx`
- [Enrollment](https://github.com/avinash111921/campussync/blob/main/admin/src/pages/EnrollStudent.jsx): `admin/src/pages/EnrollStudent.jsx`
- [Grade Management](https://github.com/avinash111921/campussync/blob/main/admin/src/pages/CGPAmanagment.jsx): `admin/src/pages/CGPAmanagment.jsx`

### Backend API

- [API Server](https://github.com/avinash111921/campussync/blob/main/backend/server.js): `backend/server.js`
- [User Routes](https://github.com/avinash111921/campussync/blob/main/backend/src/routes/user.routes.js): `backend/src/routes/user.routes.js`
- [Student Routes](https://github.com/avinash111921/campussync/blob/main/backend/src/routes/student.routes.js): `backend/src/routes/student.routes.js`
- [Course Routes](https://github.com/avinash111921/campussync/blob/main/backend/src/routes/course.routes.js): `backend/src/routes/course.routes.js`
- [CGPA Routes](https://github.com/avinash111921/campussync/blob/main/backend/src/routes/cgpa.routes.js): `backend/src/routes/cgpa.routes.js`
- [User Operations](https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/user.conterollers.js): `backend/src/controllers/user.conterollers.js`
- [Student Operations](https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/student.controllers.js): `backend/src/controllers/student.controllers.js`
- [Course Operations](https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/courses.controllers.js): `backend/src/controllers/courses.controllers.js`
- [Grade Calculation](https://github.com/avinash111921/campussync/blob/main/backend/src/controllers/cgpa.controllers.js): `backend/src/controllers/cgpa.controllers.js`
- [Authentication Guard](https://github.com/avinash111921/campussync/blob/main/backend/src/middlewares/auth.middlewares.js): `backend/src/middlewares/auth.middlewares.js`
- [Admin Guard](https://github.com/avinash111921/campussync/blob/main/backend/src/middlewares/admin.middlewares.js): `backend/src/middlewares/admin.middlewares.js`

### Academic Data

- [MongoDB](https://github.com/avinash111921/campussync/blob/main/backend/src/db/db.js): `backend/src/db/db.js`
- [Student Records](https://github.com/avinash111921/campussync/blob/main/backend/src/models/student.models.js): `backend/src/models/student.models.js`
- [Course Records](https://github.com/avinash111921/campussync/blob/main/backend/src/models/Course.models.js): `backend/src/models/Course.models.js`
- [Grade Records](https://github.com/avinash111921/campussync/blob/main/backend/src/models/Cgpa.models.js): `backend/src/models/Cgpa.models.js`
- [User Records](https://github.com/avinash111921/campussync/blob/main/backend/src/models/user.models.js): `backend/src/models/user.models.js`

### Other components

- **Student**
- **Administrator**

## Connections

- Student → Student Routes: uses (evidence: `frontend/src/App.jsx`)
- Student Routes → Authentication: checks login (evidence: `frontend/src/App.jsx`)
- Student Routes → Dashboard: routes to (evidence: `frontend/src/App.jsx`)
- Student Routes → Courses: routes to (evidence: `frontend/src/App.jsx`)
- Student Routes → Grades: routes to (evidence: `frontend/src/App.jsx`)
- Authentication → Student Data: clears data (evidence: `frontend/src/context/AuthContexts.jsx`)
- Dashboard → Student Data: reads (evidence: `frontend/src/pages/DashboardContent.jsx`)
- Grades → Student Data: reads (evidence: `frontend/src/pages/GradesContent.jsx`)
- Authentication → User Routes: requests auth
- Student Data → Student Routes: requests records
- Administrator → Admin Routes: uses (evidence: `admin/src/App.jsx`)
- Admin Routes → Admin Context: checks session (evidence: `admin/src/App.jsx`)
- Admin Routes → Student Management: routes to (evidence: `admin/src/App.jsx`)
- Admin Routes → Course Management: routes to (evidence: `admin/src/App.jsx`)
- Admin Routes → Enrollment: routes to (evidence: `admin/src/App.jsx`)
- Admin Routes → Grade Management: routes to (evidence: `admin/src/App.jsx`)
- Admin Context → Student Routes: fetches students
- Admin Context → Course Routes: fetches courses
- Enrollment → Student Routes: enrolls student
- Student Management → Student Routes: manages records
- Course Management → Course Routes: manages courses
- Grade Management → CGPA Routes: manages grades
- API Server → User Routes: mounts (evidence: `backend/server.js`)
- API Server → Student Routes: mounts (evidence: `backend/server.js`)
- API Server → Course Routes: mounts (evidence: `backend/server.js`)
- API Server → CGPA Routes: mounts (evidence: `backend/server.js`)
- API Server → MongoDB: connects (evidence: `backend/server.js`)
- User Routes → User Operations: dispatches (evidence: `backend/src/routes/user.routes.js`)
- User Routes → Authentication Guard: guards routes (evidence: `backend/src/routes/user.routes.js`)
- Student Routes → Student Operations: dispatches (evidence: `backend/src/routes/student.routes.js`)
- Student Routes → Admin Guard: guards routes (evidence: `backend/src/routes/student.routes.js`)
- Course Routes → Course Operations: dispatches (evidence: `backend/src/routes/course.routes.js`)
- Course Routes → Admin Guard: guards routes (evidence: `backend/src/routes/course.routes.js`)
- CGPA Routes → Grade Calculation: dispatches (evidence: `backend/src/routes/cgpa.routes.js`)
- CGPA Routes → Authentication Guard: guards routes (evidence: `backend/src/routes/cgpa.routes.js`)
- CGPA Routes → Admin Guard: guards routes (evidence: `backend/src/routes/cgpa.routes.js`)
- Authentication Guard → User Records: checks identity (evidence: `backend/src/middlewares/auth.middlewares.js`)
- Student Operations → Student Records: reads and writes (evidence: `backend/src/controllers/student.controllers.js`)
- Student Operations → Course Records: reads (evidence: `backend/src/controllers/student.controllers.js`)
- Student Operations → Grade Records: reads (evidence: `backend/src/controllers/student.controllers.js`)
- Course Operations → Course Records: reads and writes (evidence: `backend/src/controllers/courses.controllers.js`)
- Course Operations → Student Records: updates enrollments (evidence: `backend/src/controllers/courses.controllers.js`)
- Grade Calculation → Course Records: reads credits (evidence: `backend/src/controllers/cgpa.controllers.js`)
- Grade Calculation → Grade Records: reads and writes (evidence: `backend/src/controllers/cgpa.controllers.js`)
- Grade Calculation → Student Records: validates student (evidence: `backend/src/controllers/cgpa.controllers.js`)
