# gireesh2658/uni_meet architecture

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

- Interactive diagram: https://gitdiagram.com/gireesh2658/uni_meet
- Repository: https://github.com/gireesh2658/uni_meet

## Overview

Unimeet is a role-based faculty appointment platform. Students discover faculty and open slots, book and manage appointments; faculty publish slots and handle requests; administrators manage users, appointments, and reports. The frontend’s role-specific pages communicate with REST routes and controllers, which apply domain rules and persist records in MongoDB. The graph includes authentication, notifications, and meeting support documented by the repository. Some frontend service and backend controller implementations were not sampled, so uncertain internal call links are omitted.

Main entry points: [`server/server.js`](https://github.com/gireesh2658/uni_meet/blob/main/server/server.js) (REST application), [`frontend/src/App.jsx`](https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/App.jsx) (Role-based app), [`server/controllers/adminController.js`](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/adminController.js) (Admin management and reports), [`frontend/src/services/api.js`](https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/services/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_web_app["Role-based app<br/>[App.jsx]"]
  node_student_pages["Student pages"]
  node_faculty_pages["Faculty pages"]
  node_admin_pages["Admin pages"]
  node_auth_ui["Login and registration"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_identity["Identity"]
  node_auth_context["Auth state<br/>[AuthContext.jsx]"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_controller["Auth controller<br/>[authController.js]"]
  node_user_store[("User records<br/>[User.js]")]
  node_access_control["Authentication and roles<br/>[authMiddleware.js]"]
end

subgraph group_scheduling["Scheduling"]
  node_faculty_routes["Faculty routes<br/>[facultyRoutes.js]"]
  node_faculty_controller["Faculty profiles and discovery"]
  node_slot_controller["Slot management<br/>[slotController.js]"]
  node_slot_store[("Time slots<br/>[TimeSlot.js]")]
  node_appointment_routes["Appointment routes"]
  node_appointment_controller["Appointment workflow"]
  node_appointment_store[("Appointments<br/>[Appointment.js]")]
end

subgraph group_operations["Operations"]
  node_admin_routes["Admin routes<br/>[adminRoutes.js]"]
  node_admin_controller["Admin management and reports<br/>[adminController.js]"]
  node_notification_controller["Notifications"]
  node_notification_store[("Notification records<br/>[Notification.js]")]
  node_meeting_routes["Meeting routes<br/>[meetingRoutes.js]"]
  node_meeting_controller["Meeting management"]
  node_meeting_store[("Meetings<br/>[Meeting.js]")]
  node_express_app["REST application<br/>[server.js]"]
end

node_student(("Student"))
node_faculty_actor(("Faculty"))
node_admin_actor(("Administrator"))
node_mongo[("MongoDB")]

node_student -->|"uses"| node_web_app
node_faculty_actor -->|"uses"| node_web_app
node_admin_actor -->|"uses"| node_web_app
node_web_app -->|"routes to"| node_student_pages
node_web_app -->|"routes to"| node_faculty_pages
node_web_app -->|"routes to"| node_admin_pages
node_web_app -->|"routes to"| node_auth_ui
node_auth_ui -->|"updates"| node_auth_context
node_student_pages -->|"requests"| node_api_client
node_faculty_pages -->|"requests"| node_api_client
node_admin_pages -->|"requests"| node_api_client
node_auth_context -->|"requests"| node_api_client
node_api_client -->|"HTTP requests"| node_express_app
node_express_app -->|"mounts"| node_auth_routes
node_express_app -->|"mounts"| node_faculty_routes
node_express_app -->|"mounts"| node_appointment_routes
node_express_app -->|"mounts"| node_admin_routes
node_express_app -->|"mounts"| node_meeting_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"reads/writes"| node_user_store
node_auth_controller -->|"issues tokens"| node_access_control
node_faculty_routes -->|"dispatches"| node_faculty_controller
node_faculty_controller -->|"reads"| node_user_store
node_faculty_controller -->|"reads"| node_slot_store
node_slot_controller -->|"creates/updates"| node_slot_store
node_appointment_routes -->|"dispatches"| node_appointment_controller
node_appointment_controller -->|"reads/writes"| node_appointment_store
node_appointment_controller -->|"checks/updates"| node_slot_store
node_appointment_controller -->|"creates"| node_notification_store
node_admin_routes -->|"dispatches"| node_admin_controller
node_admin_controller -->|"manages"| node_user_store
node_admin_controller -->|"reports/updates"| node_appointment_store
node_admin_controller -->|"updates"| node_slot_store
node_admin_controller -->|"creates"| node_notification_store
node_notification_controller -->|"reads/writes"| node_notification_store
node_meeting_routes -->|"dispatches"| node_meeting_controller
node_meeting_controller -->|"reads/writes"| node_meeting_store
node_express_app -->|"connects via config"| node_mongo
node_user_store -->|"persists"| node_mongo
node_slot_store -->|"persists"| node_mongo
node_appointment_store -->|"persists"| node_mongo
node_notification_store -->|"persists"| node_mongo
node_meeting_store -->|"persists"| node_mongo

click node_web_app "https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/App.jsx"
click node_student_pages "https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/student"
click node_faculty_pages "https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/faculty"
click node_admin_pages "https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/admin"
click node_auth_ui "https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages"
click node_api_client "https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/services/api.js"
click node_auth_context "https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/context/AuthContext.jsx"
click node_auth_routes "https://github.com/gireesh2658/uni_meet/blob/main/server/routes/authRoutes.js"
click node_auth_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/authController.js"
click node_user_store "https://github.com/gireesh2658/uni_meet/blob/main/server/models/User.js"
click node_access_control "https://github.com/gireesh2658/uni_meet/blob/main/server/middleware/authMiddleware.js"
click node_faculty_routes "https://github.com/gireesh2658/uni_meet/blob/main/server/routes/facultyRoutes.js"
click node_faculty_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/facultyController.js"
click node_slot_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/slotController.js"
click node_slot_store "https://github.com/gireesh2658/uni_meet/blob/main/server/models/TimeSlot.js"
click node_appointment_routes "https://github.com/gireesh2658/uni_meet/blob/main/server/routes/appointmentRoutes.js"
click node_appointment_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/appointmentController.js"
click node_appointment_store "https://github.com/gireesh2658/uni_meet/blob/main/server/models/Appointment.js"
click node_admin_routes "https://github.com/gireesh2658/uni_meet/blob/main/server/routes/adminRoutes.js"
click node_admin_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/adminController.js"
click node_notification_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/notificationController.js"
click node_notification_store "https://github.com/gireesh2658/uni_meet/blob/main/server/models/Notification.js"
click node_meeting_routes "https://github.com/gireesh2658/uni_meet/blob/main/server/routes/meetingRoutes.js"
click node_meeting_controller "https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/meetingController.js"
click node_meeting_store "https://github.com/gireesh2658/uni_meet/blob/main/server/models/Meeting.js"
click node_express_app "https://github.com/gireesh2658/uni_meet/blob/main/server/server.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_web_app,node_student_pages,node_faculty_pages,node_admin_pages,node_auth_ui,node_api_client toneBlue
class node_auth_context,node_auth_routes,node_auth_controller,node_user_store,node_access_control,node_mongo toneAmber
class node_faculty_routes,node_faculty_controller,node_slot_controller,node_slot_store,node_appointment_routes,node_appointment_controller,node_appointment_store toneMint
class node_admin_routes,node_admin_controller,node_notification_controller,node_notification_store,node_meeting_routes,node_meeting_controller,node_meeting_store,node_express_app toneRose
class node_student,node_faculty_actor,node_admin_actor toneIndigo
```

## Components

### Frontend

- [Role-based app](https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Student pages](https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/student): `frontend/src/pages/student`
- [Faculty pages](https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/faculty): `frontend/src/pages/faculty`
- [Admin pages](https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages/admin): `frontend/src/pages/admin`
- [Login and registration](https://github.com/gireesh2658/uni_meet/tree/main/frontend/src/pages): `frontend/src/pages`
- [API client](https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Identity

- [Auth state](https://github.com/gireesh2658/uni_meet/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Auth routes](https://github.com/gireesh2658/uni_meet/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Auth controller](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [User records](https://github.com/gireesh2658/uni_meet/blob/main/server/models/User.js): `server/models/User.js`
- [Authentication and roles](https://github.com/gireesh2658/uni_meet/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`

### Scheduling

- [Faculty routes](https://github.com/gireesh2658/uni_meet/blob/main/server/routes/facultyRoutes.js): `server/routes/facultyRoutes.js`
- [Faculty profiles and discovery](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/facultyController.js): `server/controllers/facultyController.js`
- [Slot management](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/slotController.js): `server/controllers/slotController.js`
- [Time slots](https://github.com/gireesh2658/uni_meet/blob/main/server/models/TimeSlot.js): `server/models/TimeSlot.js`
- [Appointment routes](https://github.com/gireesh2658/uni_meet/blob/main/server/routes/appointmentRoutes.js): `server/routes/appointmentRoutes.js`
- [Appointment workflow](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/appointmentController.js): `server/controllers/appointmentController.js`
- [Appointments](https://github.com/gireesh2658/uni_meet/blob/main/server/models/Appointment.js): `server/models/Appointment.js`

### Operations

- [Admin routes](https://github.com/gireesh2658/uni_meet/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`
- [Admin management and reports](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`
- [Notifications](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/notificationController.js): `server/controllers/notificationController.js`
- [Notification records](https://github.com/gireesh2658/uni_meet/blob/main/server/models/Notification.js): `server/models/Notification.js`
- [Meeting routes](https://github.com/gireesh2658/uni_meet/blob/main/server/routes/meetingRoutes.js): `server/routes/meetingRoutes.js`
- [Meeting management](https://github.com/gireesh2658/uni_meet/blob/main/server/controllers/meetingController.js): `server/controllers/meetingController.js`
- [Meetings](https://github.com/gireesh2658/uni_meet/blob/main/server/models/Meeting.js): `server/models/Meeting.js`
- [REST application](https://github.com/gireesh2658/uni_meet/blob/main/server/server.js): `server/server.js`

### Other components

- **Student**
- **Faculty**
- **Administrator**
- **MongoDB**

## Connections

- Student → Role-based app: uses
- Faculty → Role-based app: uses
- Administrator → Role-based app: uses
- Role-based app → Student pages: routes to
- Role-based app → Faculty pages: routes to
- Role-based app → Admin pages: routes to
- Role-based app → Login and registration: routes to
- Login and registration → Auth state: updates
- Student pages → API client: requests
- Faculty pages → API client: requests
- Admin pages → API client: requests
- Auth state → API client: requests
- API client → REST application: HTTP requests
- REST application → Auth routes: mounts
- REST application → Faculty routes: mounts
- REST application → Appointment routes: mounts
- REST application → Admin routes: mounts
- REST application → Meeting routes: mounts
- Auth routes → Auth controller: dispatches
- Auth controller → User records: reads/writes
- Auth controller → Authentication and roles: issues tokens
- Faculty routes → Faculty profiles and discovery: dispatches
- Faculty profiles and discovery → User records: reads
- Faculty profiles and discovery → Time slots: reads
- Slot management → Time slots: creates/updates
- Appointment routes → Appointment workflow: dispatches
- Appointment workflow → Appointments: reads/writes
- Appointment workflow → Time slots: checks/updates
- Appointment workflow → Notification records: creates
- Admin routes → Admin management and reports: dispatches
- Admin management and reports → User records: manages
- Admin management and reports → Appointments: reports/updates
- Admin management and reports → Time slots: updates
- Admin management and reports → Notification records: creates
- Notifications → Notification records: reads/writes
- Meeting routes → Meeting management: dispatches
- Meeting management → Meetings: reads/writes
- REST application → MongoDB: connects via config
- User records → MongoDB: persists
- Time slots → MongoDB: persists
- Appointments → MongoDB: persists
- Notification records → MongoDB: persists
- Meetings → MongoDB: persists
