# mahdi-rasooli/meeting-system architecture

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

- Interactive diagram: https://gitdiagram.com/mahdi-rasooli/meeting-system
- Repository: https://github.com/mahdi-rasooli/meeting-system

## Overview

AVIMeet is a meeting-room booking interface backed by an Express bridge to ManageEngine. Employees view room availability, create or manage bookings, and see upcoming meetings; booking operations flow through the frontend API client, backend routes and controller, then the ManageEngine service. SAML login is a separate authentication branch. The README documents calendar, booking, and upcoming-meeting capabilities, while sampled frontend source mainly confirms booking-calendar behavior; some UI wiring is therefore represented at the documented feature level.

Main entry points: [`server/server.js`](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/server.js) (Express server), [`front-end/app/dashboard/page.jsx`](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/app/dashboard/page.jsx) (Booking dashboard), [`front-end/lib/api.js`](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/lib/api.js) (API client), [`front-end/components/features/booking-calendar.jsx`](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/components/features/booking-calendar.jsx) (Room calendar)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Booking interface"]
  node_dashboard["Booking dashboard<br/>[page.jsx]"]
  node_calendar["Room calendar"]
  node_upcoming["Upcoming meetings"]
  node_api["API client<br/>[api.js]"]
end

subgraph group_backend["Booking API"]
  node_server["Express server<br/>[server.js]"]
  node_routes["Booking routes<br/>[requestRoutes.js]"]
  node_controller["Request controller"]
  node_service["ManageEngine service"]
end

subgraph group_integration["External systems"]
  node_manageengine["ManageEngine"]
end

subgraph group_authentication["SSO authentication"]
  node_sso_config["SAML strategy<br/>[passport-saml.js]"]
  node_adfs["ADFS identity provider"]
end

node_employee(("Employee"))

node_employee -->|"opens"| node_dashboard
node_dashboard -->|"presents"| node_calendar
node_dashboard -->|"shows"| node_upcoming
node_calendar -->|"requests bookings"| node_api
node_upcoming -.->|"loads meetings"| node_api
node_api -->|"sends REST calls"| node_server
node_server -->|"mounts requests"| node_routes
node_routes -->|"dispatches"| node_controller
node_controller -->|"calls booking operations"| node_service
node_service -->|"reads and changes"| node_manageengine
node_employee -->|"starts SSO"| node_server
node_server -->|"configures Passport"| node_sso_config
node_sso_config -->|"authenticates with"| node_adfs

click node_dashboard "https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/app/dashboard/page.jsx"
click node_calendar "https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/components/features/booking-calendar.jsx"
click node_upcoming "https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/components/features/UpcomingMeeetings.jsx"
click node_api "https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/lib/api.js"
click node_server "https://github.com/mahdi-rasooli/meeting-system/blob/main/server/server.js"
click node_routes "https://github.com/mahdi-rasooli/meeting-system/blob/main/server/routes/requestRoutes.js"
click node_controller "https://github.com/mahdi-rasooli/meeting-system/blob/main/server/controllers/requestController.js"
click node_service "https://github.com/mahdi-rasooli/meeting-system/blob/main/server/services/manageEngineService.js"
click node_sso_config "https://github.com/mahdi-rasooli/meeting-system/blob/main/server/config/passport-saml.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_dashboard,node_calendar,node_upcoming,node_api toneBlue
class node_server,node_routes,node_controller,node_service toneAmber
class node_manageengine toneMint
class node_sso_config,node_adfs toneRose
class node_employee toneIndigo
```

## Components

### Booking interface

- [Booking dashboard](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/app/dashboard/page.jsx): `front-end/app/dashboard/page.jsx`
- [Room calendar](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/components/features/booking-calendar.jsx): `front-end/components/features/booking-calendar.jsx`
- [Upcoming meetings](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/components/features/UpcomingMeeetings.jsx): `front-end/components/features/UpcomingMeeetings.jsx`
- [API client](https://github.com/mahdi-rasooli/meeting-system/blob/main/front-end/lib/api.js): `front-end/lib/api.js`

### Booking API

- [Express server](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/server.js): `server/server.js`
- [Booking routes](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/routes/requestRoutes.js): `server/routes/requestRoutes.js`
- [Request controller](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/controllers/requestController.js): `server/controllers/requestController.js`
- [ManageEngine service](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/services/manageEngineService.js): `server/services/manageEngineService.js`

### External systems

- **ManageEngine**

### SSO authentication

- [SAML strategy](https://github.com/mahdi-rasooli/meeting-system/blob/main/server/config/passport-saml.js): `server/config/passport-saml.js`
- **ADFS identity provider**

### Other components

- **Employee**

## Connections

- Employee → Booking dashboard: opens
- Booking dashboard → Room calendar: presents
- Booking dashboard → Upcoming meetings: shows
- Room calendar → API client: requests bookings
- Upcoming meetings → API client: loads meetings
- API client → Express server: sends REST calls
- Express server → Booking routes: mounts requests
- Booking routes → Request controller: dispatches
- Request controller → ManageEngine service: calls booking operations
- ManageEngine service → ManageEngine: reads and changes
- Employee → Express server: starts SSO
- Express server → SAML strategy: configures Passport
- SAML strategy → ADFS identity provider: authenticates with
