# aashu-kushwaha/university-dekho architecture

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

- Interactive diagram: https://gitdiagram.com/aashu-kushwaha/university-dekho
- Repository: https://github.com/aashu-kushwaha/university-dekho

## Overview

University Dekho is a university-program discovery and application portal. Students browse and filter programs, view program and university details, get recommendations or AI planning support, register or sign in, and submit and track applications; administrators review applications and manage contact messages. The graph connects sampled frontend routing and API use to backend routes, controllers, models, and email service. Several capability paths are represented by exact directories because their source was not excerpted; their internal links are therefore omitted where evidence is insufficient.

Main entry points: [`frontend/src/App.jsx`](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/App.jsx) (Web app routing), [`frontend/src/api/axios.js`](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/api/axios.js) (API client), [`backend/src/controllers/auth.controller.js`](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/auth.controller.js) (Account workflows), [`backend/src/middleware/auth.middleware.js`](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/middleware/auth.middleware.js) (Session validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student portal"]
  node_app["Web app routing<br/>[App.jsx]"]
  node_authui["Auth state<br/>[AuthContext.jsx]"]
  node_api["API client<br/>[axios.js]"]
  node_browse["Program discovery<br/>[Programs.jsx]"]
  node_home["Home discovery<br/>[Home.jsx]"]
  node_programdetail["Program details<br/>[ProgramDetail.jsx]"]
  node_universitydetail["University details"]
  node_recommendui["Recommendations view"]
  node_planner["AI planner<br/>[AIPlanner.jsx]"]
  node_register["Registration view<br/>[Register.jsx]"]
  node_applicationsui["My applications<br/>[Applications.jsx]"]
  node_adminui["Application admin"]
  node_messagesui["Message admin<br/>[AdminMessages.jsx]"]
end

subgraph group_identity["Identity and access"]
  node_authroutes["Auth routes<br/>[auth.route.js]"]
  node_authcontroller["Account workflows<br/>[auth.controller.js]"]
  node_authmiddleware["Session validation<br/>[auth.middleware.js]"]
  node_user[("User records<br/>[user.model.js]")]
  node_otp[("OTP records<br/>[otp.model.js]")]
  node_blacklist[("Token blacklist<br/>[blacklist.model.js]")]
end

subgraph group_catalog["University catalog"]
  node_catalogroutes["Catalog routes<br/>[program.route.js]"]
  node_programcontroller["Program discovery logic"]
  node_program[("Program records<br/>[program.model.js]")]
  node_universityroutes["University routes"]
  node_universitycontroller["University operations"]
  node_university[("University records")]
  node_recommendroutes["Recommendation routes"]
  node_recommendcontroller["Recommendation logic"]
end

subgraph group_admissions["Admissions and engagement"]
  node_applicationroutes["Application routes"]
  node_applicationcontroller["Application workflows"]
  node_application[("Application records")]
  node_contactroutes["Contact routes<br/>[contact.route.js]"]
  node_contactcontroller["Contact workflows"]
end

subgraph group_services["Backend services"]
end

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

node_student -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"routes to"| node_browse
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_programdetail
node_app -->|"routes to"| node_universitydetail
node_app -->|"routes to"| node_recommendui
node_app -->|"routes to"| node_planner
node_app -->|"routes to"| node_register
node_app -->|"routes to"| node_applicationsui
node_app -->|"routes to"| node_adminui
node_app -->|"routes to"| node_messagesui
node_authui -->|"calls"| node_api
node_browse -->|"calls"| node_api
node_home -->|"calls"| node_api
node_programdetail -->|"calls"| node_api
node_recommendui -->|"calls"| node_api
node_register -->|"calls"| node_api
node_applicationsui -->|"calls"| node_api
node_adminui -->|"calls"| node_api
node_api -.->|"requests"| node_authroutes
node_api -.->|"requests"| node_catalogroutes
node_api -.->|"requests"| node_recommendroutes
node_api -.->|"requests"| node_applicationroutes
node_api -.->|"requests"| node_contactroutes
node_authroutes -->|"dispatches"| node_authcontroller
node_authroutes -->|"protects"| node_authmiddleware
node_authcontroller -->|"reads and writes"| node_user
node_authcontroller -->|"reads and writes"| node_otp
node_authcontroller -->|"records tokens"| node_blacklist
node_authmiddleware -->|"checks"| node_blacklist
node_authmiddleware -->|"loads user"| node_user
node_catalogroutes -->|"dispatches"| node_programcontroller
node_programcontroller -->|"queries"| node_program
node_recommendroutes -.->|"dispatches"| node_recommendcontroller
node_recommendcontroller -->|"queries"| node_program
node_universityroutes -.->|"dispatches"| node_universitycontroller
node_universitycontroller -.->|"uses"| node_university
node_applicationroutes -->|"dispatches"| node_applicationcontroller
node_applicationroutes -->|"protects"| node_authmiddleware
node_applicationcontroller -->|"reads and writes"| node_application
node_applicationcontroller -->|"looks up"| node_program
node_contactroutes -.->|"dispatches"| node_contactcontroller

click node_app "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/App.jsx"
click node_authui "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/context/AuthContext.jsx"
click node_api "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/api/axios.js"
click node_browse "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Programs.jsx"
click node_home "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Home.jsx"
click node_programdetail "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/ProgramDetail.jsx"
click node_universitydetail "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/UniversityDetail.jsx"
click node_recommendui "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Recommendations.jsx"
click node_planner "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AIPlanner.jsx"
click node_register "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Register.jsx"
click node_applicationsui "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Applications.jsx"
click node_adminui "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AdminApplications.jsx"
click node_messagesui "https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AdminMessages.jsx"
click node_authroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/auth.route.js"
click node_authcontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/auth.controller.js"
click node_authmiddleware "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/middleware/auth.middleware.js"
click node_user "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/user.model.js"
click node_otp "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/otp.model.js"
click node_blacklist "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/blacklist.model.js"
click node_catalogroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/program.route.js"
click node_programcontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/program.controller.js"
click node_program "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/program.model.js"
click node_universityroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/university.route.js"
click node_universitycontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/university.controller.js"
click node_university "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/university.model.js"
click node_recommendroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/recommendation.route.js"
click node_recommendcontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/recommendation.controller.js"
click node_applicationroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/application.route.js"
click node_applicationcontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/application.controller.js"
click node_application "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/application.model.js"
click node_contactroutes "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/contact.route.js"
click node_contactcontroller "https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/contact.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_app,node_authui,node_api,node_browse,node_home,node_programdetail,node_universitydetail,node_recommendui,node_planner,node_register,node_applicationsui,node_adminui,node_messagesui toneBlue
class node_authroutes,node_authcontroller,node_authmiddleware,node_user,node_otp,node_blacklist toneAmber
class node_catalogroutes,node_programcontroller,node_program,node_universityroutes,node_universitycontroller,node_university,node_recommendroutes,node_recommendcontroller toneMint
class node_applicationroutes,node_applicationcontroller,node_application,node_contactroutes,node_contactcontroller toneRose
class node_student,node_admin toneIndigo
```

## Components

### Student portal

- [Web app routing](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`
- [Program discovery](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Programs.jsx): `frontend/src/pages/Programs.jsx`
- [Home discovery](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [Program details](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/ProgramDetail.jsx): `frontend/src/pages/ProgramDetail.jsx`
- [University details](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/UniversityDetail.jsx): `frontend/src/pages/UniversityDetail.jsx`
- [Recommendations view](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Recommendations.jsx): `frontend/src/pages/Recommendations.jsx`
- [AI planner](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AIPlanner.jsx): `frontend/src/pages/AIPlanner.jsx`
- [Registration view](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Register.jsx): `frontend/src/pages/Register.jsx`
- [My applications](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/Applications.jsx): `frontend/src/pages/Applications.jsx`
- [Application admin](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AdminApplications.jsx): `frontend/src/pages/AdminApplications.jsx`
- [Message admin](https://github.com/aashu-kushwaha/university-dekho/blob/main/frontend/src/pages/AdminMessages.jsx): `frontend/src/pages/AdminMessages.jsx`

### Identity and access

- [Auth routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/auth.route.js): `backend/src/routes/auth.route.js`
- [Account workflows](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/auth.controller.js): `backend/src/controllers/auth.controller.js`
- [Session validation](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/middleware/auth.middleware.js): `backend/src/middleware/auth.middleware.js`
- [User records](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/user.model.js): `backend/src/models/user.model.js`
- [OTP records](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/otp.model.js): `backend/src/models/otp.model.js`
- [Token blacklist](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/blacklist.model.js): `backend/src/models/blacklist.model.js`

### University catalog

- [Catalog routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/program.route.js): `backend/src/routes/program.route.js`
- [Program discovery logic](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/program.controller.js): `backend/src/controllers/program.controller.js`
- [Program records](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/program.model.js): `backend/src/models/program.model.js`
- [University routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/university.route.js): `backend/src/routes/university.route.js`
- [University operations](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/university.controller.js): `backend/src/controllers/university.controller.js`
- [University records](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/university.model.js): `backend/src/models/university.model.js`
- [Recommendation routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/recommendation.route.js): `backend/src/routes/recommendation.route.js`
- [Recommendation logic](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/recommendation.controller.js): `backend/src/controllers/recommendation.controller.js`

### Admissions and engagement

- [Application routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/application.route.js): `backend/src/routes/application.route.js`
- [Application workflows](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/application.controller.js): `backend/src/controllers/application.controller.js`
- [Application records](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/models/application.model.js): `backend/src/models/application.model.js`
- [Contact routes](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/routes/contact.route.js): `backend/src/routes/contact.route.js`
- [Contact workflows](https://github.com/aashu-kushwaha/university-dekho/blob/main/backend/src/controllers/contact.controller.js): `backend/src/controllers/contact.controller.js`

### Other components

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

## Connections

- Student → Web app routing: uses (evidence: `frontend/src/App.jsx`)
- Administrator → Web app routing: uses (evidence: `frontend/src/App.jsx`)
- Web app routing → Program discovery: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Home discovery: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Program details: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → University details: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Recommendations view: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → AI planner: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Registration view: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → My applications: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Application admin: routes to (evidence: `frontend/src/App.jsx`)
- Web app routing → Message admin: routes to (evidence: `frontend/src/App.jsx`)
- Auth state → API client: calls (evidence: `frontend/src/context/AuthContext.jsx`)
- Program discovery → API client: calls (evidence: `frontend/src/pages/Programs.jsx`)
- Home discovery → API client: calls (evidence: `frontend/src/pages/Home.jsx`)
- Program details → API client: calls (evidence: `frontend/src/pages/ProgramDetail.jsx`)
- Recommendations view → API client: calls (evidence: `frontend/src/pages/Recommendations.jsx`)
- Registration view → API client: calls (evidence: `frontend/src/pages/Register.jsx`)
- My applications → API client: calls (evidence: `frontend/src/pages/Applications.jsx`)
- Application admin → API client: calls (evidence: `frontend/src/pages/AdminApplications.jsx`)
- API client → Auth routes: requests
- API client → Catalog routes: requests
- API client → Recommendation routes: requests
- API client → Application routes: requests
- API client → Contact routes: requests
- Auth routes → Account workflows: dispatches (evidence: `backend/src/routes/auth.route.js`)
- Auth routes → Session validation: protects (evidence: `backend/src/routes/auth.route.js`)
- Account workflows → User records: reads and writes (evidence: `backend/src/controllers/auth.controller.js`)
- Account workflows → OTP records: reads and writes (evidence: `backend/src/controllers/auth.controller.js`)
- Account workflows → Token blacklist: records tokens (evidence: `backend/src/controllers/auth.controller.js`)
- Session validation → Token blacklist: checks (evidence: `backend/src/middleware/auth.middleware.js`)
- Session validation → User records: loads user (evidence: `backend/src/middleware/auth.middleware.js`)
- Catalog routes → Program discovery logic: dispatches (evidence: `backend/src/routes/program.route.js`)
- Program discovery logic → Program records: queries (evidence: `backend/src/controllers/program.controller.js`)
- Recommendation routes → Recommendation logic: dispatches
- Recommendation logic → Program records: queries (evidence: `backend/src/controllers/recommendation.controller.js`)
- University routes → University operations: dispatches
- University operations → University records: uses
- Application routes → Application workflows: dispatches (evidence: `backend/src/routes/application.route.js`)
- Application routes → Session validation: protects (evidence: `backend/src/routes/application.route.js`)
- Application workflows → Application records: reads and writes (evidence: `backend/src/controllers/application.controller.js`)
- Application workflows → Program records: looks up (evidence: `backend/src/controllers/application.controller.js`)
- Contact routes → Contact workflows: dispatches (evidence: `backend/src/routes/contact.route.js`)
