# nikhil-tiwari1419/campusvoice architecture

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

- Interactive diagram: https://gitdiagram.com/nikhil-tiwari1419/campusvoice
- Repository: https://github.com/nikhil-tiwari1419/campusvoice

## Overview

ComplainBoX is a role-based campus complaint and issue-management application. Students register and complete a profile, submit or browse complaints, and vote; administrators review and manage issues, while superadmins manage administrators. The React app routes users to role-specific screens, and the Express API dispatches authenticated requests to controllers that operate on MongoDB models. The README is empty, and several frontend API modules and backend controllers were not sampled, so their internal request wiring and some management details are represented only where routes or source establish them.

Main entry points: [`ComplainBoX/src/App.jsx`](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/App.jsx) (Web router), [`server/src/app.js`](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/app.js) (API application), [`server/src/controller/user.controller.js`](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/user.controller.js) (Student profiles and feed), [`server/src/routes/user.routes.js`](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/user.routes.js) (Student routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Web router<br/>[App.jsx]"]
  node_authui["Login and verify<br/>[Login.jsx]"]
  node_studentui["Student screens<br/>[ComplainBox.jsx]"]
  node_adminui["Admin screens<br/>[AllComplain.jsx]"]
  node_superadminui["Admin setup<br/>[sadmin.jsx]"]
  node_authcontext["Session context<br/>[auth.jsx]"]
end

subgraph group_api["API and access"]
  node_serverapp["API application<br/>[app.js]"]
  node_authroutes["Auth routes<br/>[auth.routes.js]"]
  node_userroutes["Student routes<br/>[user.routes.js]"]
  node_programroutes["Program routes<br/>[program.routes.js]"]
  node_adminroutes["Admin routes<br/>[admin.routes.js]"]
  node_superroutes["Superadmin routes"]
  node_oauthroutes["OAuth routes<br/>[oauth.routes.js]"]
end

subgraph group_domain["Complaint services"]
  node_authcontroller["Authentication<br/>[auth.controller.js]"]
  node_usercontroller["Student profiles and feed<br/>[user.controller.js]"]
  node_complaintcontroller["Complaint handling"]
  node_votecontroller["Complaint voting<br/>[vote.controller.js]"]
  node_admincontroller["Admin operations"]
  node_supercontroller["Admin provisioning"]
  node_programcontroller["Program lookup"]
end

subgraph group_data["Persistent data"]
  node_users[("User records<br/>[user.model.js]")]
  node_complaints[("Complaint records")]
  node_votes[("Vote records<br/>[vote.model.js]")]
  node_otp[("OTP records<br/>[otp.model.js]")]
  node_refresh[("Refresh tokens")]
  node_programs[("Program records<br/>[Program.model.js]")]
  node_branches[("Branch records<br/>[Branch.model.js]")]
  node_batches[("Batch records<br/>[Batch.model.js]")]
end

node_student(("Student"))
node_administrator(("Administrator"))
node_superadmin(("Superadmin"))

node_student -->|"uses"| node_app
node_administrator -->|"uses"| node_app
node_superadmin -->|"uses"| node_app
node_app -->|"routes"| node_authui
node_app -->|"routes"| node_studentui
node_app -->|"routes"| node_adminui
node_app -->|"routes"| node_superadminui
node_app -->|"provides session"| node_authcontext
node_serverapp -->|"mounts"| node_authroutes
node_serverapp -->|"mounts"| node_userroutes
node_serverapp -->|"mounts"| node_programroutes
node_serverapp -->|"mounts"| node_adminroutes
node_serverapp -->|"mounts"| node_superroutes
node_serverapp -->|"mounts"| node_oauthroutes
node_authroutes -->|"dispatches"| node_authcontroller
node_userroutes -->|"dispatches"| node_usercontroller
node_userroutes -->|"dispatches"| node_complaintcontroller
node_userroutes -->|"dispatches"| node_votecontroller
node_programroutes -->|"dispatches"| node_programcontroller
node_adminroutes -->|"dispatches"| node_admincontroller
node_superroutes -->|"dispatches"| node_supercontroller
node_authcontroller -->|"reads/writes"| node_users
node_authcontroller -->|"reads/writes"| node_otp
node_authcontroller -->|"reads/writes"| node_refresh
node_usercontroller -->|"reads/writes"| node_users
node_usercontroller -->|"reads"| node_batches
node_usercontroller -->|"reads"| node_complaints
node_usercontroller -->|"reads"| node_votes
node_complaintcontroller -->|"reads/writes"| node_complaints
node_votecontroller -->|"reads/writes"| node_votes
node_admincontroller -->|"reads/writes"| node_users
node_admincontroller -->|"reads/writes"| node_complaints
node_supercontroller -->|"reads/writes"| node_users
node_supercontroller -->|"reads"| node_programs
node_supercontroller -->|"reads"| node_branches
node_programcontroller -->|"reads"| node_programs
node_programcontroller -->|"reads"| node_branches
node_programcontroller -->|"reads"| node_batches

click node_app "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/App.jsx"
click node_authui "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/Auth/Login.jsx"
click node_studentui "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/UserProfile/ComplainBox.jsx"
click node_adminui "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/AdminProfile/AllComplain.jsx"
click node_superadminui "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/Superadmin.jsx/sadmin.jsx"
click node_authcontext "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/context/auth.jsx"
click node_serverapp "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/app.js"
click node_authroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/auth.routes.js"
click node_userroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/user.routes.js"
click node_programroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/program.routes.js"
click node_adminroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/admin.routes.js"
click node_superroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/Superadmin.route.js"
click node_oauthroutes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/oauth.routes.js"
click node_authcontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/auth.controller.js"
click node_usercontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/user.controller.js"
click node_complaintcontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/complainBox.controller.js"
click node_votecontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/vote.controller.js"
click node_admincontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/admin.controller.js"
click node_supercontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/SuperAdmin.controller.js"
click node_programcontroller "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/program.controller.js"
click node_users "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/user.model.js"
click node_complaints "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/complainBox.model.js"
click node_votes "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/vote.model.js"
click node_otp "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/otp.model.js"
click node_refresh "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/refreshToken.model.js"
click node_programs "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Program.model.js"
click node_branches "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Branch.model.js"
click node_batches "https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Batch.model.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_authui,node_studentui,node_adminui,node_superadminui,node_authcontext toneBlue
class node_serverapp,node_authroutes,node_userroutes,node_programroutes,node_adminroutes,node_superroutes,node_oauthroutes toneAmber
class node_authcontroller,node_usercontroller,node_complaintcontroller,node_votecontroller,node_admincontroller,node_supercontroller,node_programcontroller toneMint
class node_users,node_complaints,node_votes,node_otp,node_refresh,node_programs,node_branches,node_batches toneRose
class node_student,node_administrator,node_superadmin toneIndigo
```

## Components

### Web application

- [Web router](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/App.jsx): `ComplainBoX/src/App.jsx`
- [Login and verify](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/Auth/Login.jsx): `ComplainBoX/src/pages/Auth/Login.jsx`
- [Student screens](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/UserProfile/ComplainBox.jsx): `ComplainBoX/src/pages/UserProfile/ComplainBox.jsx`
- [Admin screens](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/AdminProfile/AllComplain.jsx): `ComplainBoX/src/pages/AdminProfile/AllComplain.jsx`
- [Admin setup](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/pages/Superadmin.jsx/sadmin.jsx): `ComplainBoX/src/pages/Superadmin.jsx/sadmin.jsx`
- [Session context](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/ComplainBoX/src/context/auth.jsx): `ComplainBoX/src/context/auth.jsx`

### API and access

- [API application](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/app.js): `server/src/app.js`
- [Auth routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/auth.routes.js): `server/src/routes/auth.routes.js`
- [Student routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/user.routes.js): `server/src/routes/user.routes.js`
- [Program routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/program.routes.js): `server/src/routes/program.routes.js`
- [Admin routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/admin.routes.js): `server/src/routes/admin.routes.js`
- [Superadmin routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/Superadmin.route.js): `server/src/routes/Superadmin.route.js`
- [OAuth routes](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/routes/oauth.routes.js): `server/src/routes/oauth.routes.js`

### Complaint services

- [Authentication](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/auth.controller.js): `server/src/controller/auth.controller.js`
- [Student profiles and feed](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/user.controller.js): `server/src/controller/user.controller.js`
- [Complaint handling](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/complainBox.controller.js): `server/src/controller/complainBox.controller.js`
- [Complaint voting](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/vote.controller.js): `server/src/controller/vote.controller.js`
- [Admin operations](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/admin.controller.js): `server/src/controller/admin.controller.js`
- [Admin provisioning](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/SuperAdmin.controller.js): `server/src/controller/SuperAdmin.controller.js`
- [Program lookup](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/controller/program.controller.js): `server/src/controller/program.controller.js`

### Persistent data

- [User records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/user.model.js): `server/src/model/user.model.js`
- [Complaint records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/complainBox.model.js): `server/src/model/complainBox.model.js`
- [Vote records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/vote.model.js): `server/src/model/vote.model.js`
- [OTP records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/otp.model.js): `server/src/model/otp.model.js`
- [Refresh tokens](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/refreshToken.model.js): `server/src/model/refreshToken.model.js`
- [Program records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Program.model.js): `server/src/model/Program.model.js`
- [Branch records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Branch.model.js): `server/src/model/Branch.model.js`
- [Batch records](https://github.com/nikhil-tiwari1419/campusvoice/blob/main/server/src/model/Batch.model.js): `server/src/model/Batch.model.js`

### Other components

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

## Connections

- Student → Web router: uses
- Administrator → Web router: uses
- Superadmin → Web router: uses
- Web router → Login and verify: routes
- Web router → Student screens: routes
- Web router → Admin screens: routes
- Web router → Admin setup: routes
- Web router → Session context: provides session
- API application → Auth routes: mounts
- API application → Student routes: mounts
- API application → Program routes: mounts
- API application → Admin routes: mounts
- API application → Superadmin routes: mounts
- API application → OAuth routes: mounts
- Auth routes → Authentication: dispatches
- Student routes → Student profiles and feed: dispatches
- Student routes → Complaint handling: dispatches
- Student routes → Complaint voting: dispatches
- Program routes → Program lookup: dispatches
- Admin routes → Admin operations: dispatches
- Superadmin routes → Admin provisioning: dispatches
- Authentication → User records: reads/writes
- Authentication → OTP records: reads/writes
- Authentication → Refresh tokens: reads/writes
- Student profiles and feed → User records: reads/writes
- Student profiles and feed → Batch records: reads
- Student profiles and feed → Complaint records: reads
- Student profiles and feed → Vote records: reads
- Complaint handling → Complaint records: reads/writes
- Complaint voting → Vote records: reads/writes
- Admin operations → User records: reads/writes
- Admin operations → Complaint records: reads/writes
- Admin provisioning → User records: reads/writes
- Admin provisioning → Program records: reads
- Admin provisioning → Branch records: reads
- Program lookup → Program records: reads
- Program lookup → Branch records: reads
- Program lookup → Batch records: reads
