# 2110503-cedt68/be-project-68-soijuboy architecture

> Architecture diagram of the GitHub repository 2110503-cedt68/be-project-68-soijuboy, 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/2110503-cedt68/be-project-68-soijuboy
- Repository: https://github.com/2110503-cedt68/be-project-68-soijuboy

## Overview

This is an Express API for interview-session booking, with user registration/login, role-based access, company and session management, and booking rules. The main workflow is a user authenticating, browsing sessions, and creating or managing bookings; bookings update session availability. The README provides no architecture details, and company/booking route implementations were not sampled, so their wiring is not asserted.

Main entry points: [`server.js`](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/server.js) (Express server), [`routes/auth.js`](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/auth.js) (Auth routes), [`routes/interviewsession.js`](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/interviewsession.js) (Session routes), [`controllers/interviewsession.js`](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/interviewsession.js) (Session controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_server["Express server<br/>[server.js]"]
  node_auth_routes["Auth routes<br/>[auth.js]"]
  node_company_routes["Company routes<br/>[company.js]"]
  node_session_routes["Session routes"]
  node_booking_routes["Booking routes<br/>[booking.js]"]
  node_company_controller["Company controller<br/>[company.js]"]
end

subgraph group_identity["Identity and Access"]
  node_auth_controller["Auth controller<br/>[auth.js]"]
  node_auth_middleware["Auth middleware<br/>[auth.js]"]
  node_user_model["User model<br/>[User.js]"]
end

subgraph group_booking["Booking Domain"]
  node_session_controller["Session controller"]
  node_booking_controller["Booking controller<br/>[booking.js]"]
end

subgraph group_data["Persistence"]
  node_company_model["Company model<br/>[company.js]"]
  node_session_model["Session model"]
  node_booking_model["Booking model<br/>[booking.js]"]
  node_db_config["DB connector<br/>[db.js]"]
  node_mongo[("MongoDB")]
end

node_user(("API client"))

node_user -->|"sends requests"| node_server
node_server -->|"connects"| node_db_config
node_db_config -->|"connects"| node_mongo
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_company_routes
node_server -->|"mounts"| node_session_routes
node_server -->|"mounts"| node_booking_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_routes -->|"protects"| node_auth_middleware
node_session_routes -->|"dispatches"| node_session_controller
node_session_routes -->|"protects"| node_auth_middleware
node_auth_middleware -->|"looks up"| node_user_model
node_auth_controller -->|"reads and creates"| node_user_model
node_session_controller -->|"reads and writes"| node_session_model
node_booking_controller -->|"reads and writes"| node_booking_model
node_booking_controller -->|"checks and updates"| node_session_model
node_session_controller -->|"populates company"| node_company_model

click node_server "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/server.js"
click node_auth_routes "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/auth.js"
click node_company_routes "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/company.js"
click node_session_routes "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/interviewsession.js"
click node_booking_routes "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/booking.js"
click node_auth_controller "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/auth.js"
click node_auth_middleware "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/middleware/auth.js"
click node_company_controller "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/company.js"
click node_session_controller "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/interviewsession.js"
click node_booking_controller "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/booking.js"
click node_user_model "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/User.js"
click node_company_model "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/company.js"
click node_session_model "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/interviewsession.js"
click node_booking_model "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/booking.js"
click node_db_config "https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/config/db.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_server,node_auth_routes,node_company_routes,node_session_routes,node_booking_routes,node_company_controller,node_user toneBlue
class node_auth_controller,node_auth_middleware,node_user_model toneAmber
class node_session_controller,node_booking_controller toneMint
class node_company_model,node_session_model,node_booking_model,node_db_config,node_mongo toneRose
```

## Components

### HTTP API

- [Express server](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/server.js): `server.js`
- [Auth routes](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/auth.js): `routes/auth.js`
- [Company routes](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/company.js): `routes/company.js`
- [Session routes](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/interviewsession.js): `routes/interviewsession.js`
- [Booking routes](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/routes/booking.js): `routes/booking.js`
- [Company controller](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/company.js): `controllers/company.js`

### Identity and Access

- [Auth controller](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/auth.js): `controllers/auth.js`
- [Auth middleware](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/middleware/auth.js): `middleware/auth.js`
- [User model](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/User.js): `models/User.js`

### Booking Domain

- [Session controller](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/interviewsession.js): `controllers/interviewsession.js`
- [Booking controller](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/controllers/booking.js): `controllers/booking.js`

### Persistence

- [Company model](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/company.js): `models/company.js`
- [Session model](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/interviewsession.js): `models/interviewsession.js`
- [Booking model](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/models/booking.js): `models/booking.js`
- [DB connector](https://github.com/2110503-cedt68/be-project-68-soijuboy/blob/main/config/db.js): `config/db.js`
- **MongoDB**

### Other components

- **API client**

## Connections

- API client → Express server: sends requests
- Express server → DB connector: connects
- DB connector → MongoDB: connects
- Express server → Auth routes: mounts
- Express server → Company routes: mounts
- Express server → Session routes: mounts
- Express server → Booking routes: mounts
- Auth routes → Auth controller: dispatches
- Auth routes → Auth middleware: protects
- Session routes → Session controller: dispatches
- Session routes → Auth middleware: protects
- Auth middleware → User model: looks up
- Auth controller → User model: reads and creates
- Session controller → Session model: reads and writes
- Booking controller → Booking model: reads and writes
- Booking controller → Session model: checks and updates
- Session controller → Company model: populates company
