# nisalasxlik/middleware_capstone architecture

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

- Interactive diagram: https://gitdiagram.com/nisalasxlik/middleware_capstone
- Repository: https://github.com/nisalasxlik/middleware_capstone

## Overview

SwiftTrack is a role-based delivery workflow prototype: clients submit orders, the gateway queues intake, a worker coordinates CMS, WMS, and ROS operations with retries and compensation, and the notification service pushes updates to clients and drivers. Admins inspect health and logs and can simulate route changes; drivers view manifests and confirm delivery, including offline queuing. The README describes the main service flow; sampled source confirms saga calls and selected UI/API behavior. Other links below rely on README statements where implementation was not sampled.

Main entry points: [`services/api-gateway/src/index.js`](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/index.js) (Express gateway), [`frontend/src/hooks/useApi.js`](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/hooks/useApi.js) (API client), [`services/worker/src/saga/orchestrator.js`](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/saga/orchestrator.js) (Saga orchestrator), [`services/notification/src/index.js`](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/notification/src/index.js) (Notification service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Role-based frontend"]
  node_login["Login<br/>[Login.jsx]"]
  node_orderform["Order form<br/>[OrderForm.jsx]"]
  node_clientdash["Client dashboard<br/>[Dashboard.jsx]"]
  node_admindash["Admin dashboard<br/>[Dashboard.jsx]"]
  node_manifest["Driver manifest<br/>[Manifest.jsx]"]
  node_delivery["Delivery confirmation"]
  node_api_client["API client<br/>[useApi.js]"]
  node_socket_hook["Socket hook<br/>[useSocket.js]"]
end

subgraph group_gateway["API gateway"]
  node_gateway["Express gateway<br/>[index.js]"]
  node_auth["Auth routes<br/>[auth.js]"]
  node_orders["Order routes<br/>[orders.js]"]
  node_drivers["Driver routes<br/>[drivers.js]"]
  node_adminroutes["Admin routes<br/>[admin.js]"]
  node_routes["Route management<br/>[routes.js]"]
end

subgraph group_workflow["Order orchestration"]
  node_worker["Worker consumer<br/>[index.js]"]
  node_saga["Saga orchestrator<br/>[orchestrator.js]"]
  node_cmsadapter["CMS adapter<br/>[cmsAdapter.js]"]
  node_wmsadapter["WMS adapter<br/>[wmsAdapter.js]"]
  node_rosadapter["ROS adapter<br/>[rosAdapter.js]"]
end

subgraph group_integrations["External services"]
  node_cms["CMS mock<br/>[index.js]"]
  node_wms["WMS mock<br/>[index.js]"]
  node_ros["ROS mock<br/>[index.js]"]
end

subgraph group_realtime["Live updates"]
  node_notification["Notification service<br/>[index.js]"]
end

node_client(("Client"))
node_driver(("Driver"))
node_admin(("Admin"))
node_mongo[("MongoDB")]
node_rabbit["RabbitMQ"]

node_client -->|"signs in"| node_login
node_driver -->|"signs in"| node_login
node_admin -->|"signs in"| node_login
node_login -->|"calls API"| node_api_client
node_orderform -->|"submits order"| node_api_client
node_clientdash -->|"loads orders"| node_api_client
node_admindash -->|"admin requests"| node_api_client
node_manifest -->|"loads manifest"| node_api_client
node_delivery -->|"confirms delivery"| node_api_client
node_clientdash -->|"subscribes updates"| node_socket_hook
node_admindash -->|"subscribes updates"| node_socket_hook
node_manifest -->|"subscribes updates"| node_socket_hook
node_api_client -->|"REST requests"| node_gateway
node_socket_hook -->|"opens WebSocket"| node_notification
node_gateway -->|"mounts routes"| node_auth
node_gateway -->|"mounts routes"| node_orders
node_gateway -->|"mounts routes"| node_drivers
node_gateway -->|"mounts routes"| node_adminroutes
node_gateway -->|"mounts routes"| node_routes
node_auth -->|"stores users"| node_mongo
node_gateway -->|"connects database"| node_mongo
node_orders -->|"queues intake"| node_rabbit
node_routes -->|"publishes event"| node_rabbit
node_rabbit -->|"delivers intake"| node_worker
node_worker -->|"invokes saga"| node_saga
node_saga -->|"calls CMS adapter"| node_cmsadapter
node_saga -->|"calls WMS adapter"| node_wmsadapter
node_saga -->|"calls ROS adapter"| node_rosadapter
node_cmsadapter -->|"SOAP requests"| node_cms
node_wmsadapter -->|"TCP requests"| node_wms
node_rosadapter -->|"REST requests"| node_ros
node_worker -->|"publishes updates"| node_rabbit
node_rabbit -->|"delivers events"| node_notification
node_notification -->|"pushes updates"| node_driver
node_notification -->|"pushes updates"| node_client

click node_login "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/Login.jsx"
click node_orderform "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/client/OrderForm.jsx"
click node_clientdash "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/client/Dashboard.jsx"
click node_admindash "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/admin/Dashboard.jsx"
click node_manifest "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/driver/Manifest.jsx"
click node_delivery "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/driver/DeliveryConfirm.jsx"
click node_api_client "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/hooks/useApi.js"
click node_socket_hook "https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/hooks/useSocket.js"
click node_gateway "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/index.js"
click node_auth "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/auth.js"
click node_orders "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/orders.js"
click node_drivers "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/drivers.js"
click node_adminroutes "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/admin.js"
click node_routes "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/routes.js"
click node_worker "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/index.js"
click node_saga "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/saga/orchestrator.js"
click node_cmsadapter "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/cmsAdapter.js"
click node_wmsadapter "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/wmsAdapter.js"
click node_rosadapter "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/rosAdapter.js"
click node_cms "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/cms-mock/src/index.js"
click node_wms "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/wms-mock/src/index.js"
click node_ros "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/ros-mock/src/index.js"
click node_notification "https://github.com/nisalasxlik/middleware_capstone/blob/main/services/notification/src/index.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_login,node_orderform,node_clientdash,node_admindash,node_manifest,node_delivery,node_api_client,node_socket_hook,node_client toneBlue
class node_gateway,node_auth,node_orders,node_drivers,node_adminroutes,node_routes,node_mongo toneAmber
class node_worker,node_saga,node_cmsadapter,node_wmsadapter,node_rosadapter toneMint
class node_cms,node_wms,node_ros toneRose
class node_notification,node_driver,node_admin,node_rabbit toneIndigo
```

## Components

### Role-based frontend

- [Login](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Order form](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/client/OrderForm.jsx): `frontend/src/pages/client/OrderForm.jsx`
- [Client dashboard](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/client/Dashboard.jsx): `frontend/src/pages/client/Dashboard.jsx`
- [Admin dashboard](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/admin/Dashboard.jsx): `frontend/src/pages/admin/Dashboard.jsx`
- [Driver manifest](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/driver/Manifest.jsx): `frontend/src/pages/driver/Manifest.jsx`
- [Delivery confirmation](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/pages/driver/DeliveryConfirm.jsx): `frontend/src/pages/driver/DeliveryConfirm.jsx`
- [API client](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/hooks/useApi.js): `frontend/src/hooks/useApi.js`
- [Socket hook](https://github.com/nisalasxlik/middleware_capstone/blob/main/frontend/src/hooks/useSocket.js): `frontend/src/hooks/useSocket.js`

### API gateway

- [Express gateway](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/index.js): `services/api-gateway/src/index.js`
- [Auth routes](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/auth.js): `services/api-gateway/src/routes/auth.js`
- [Order routes](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/orders.js): `services/api-gateway/src/routes/orders.js`
- [Driver routes](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/drivers.js): `services/api-gateway/src/routes/drivers.js`
- [Admin routes](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/admin.js): `services/api-gateway/src/routes/admin.js`
- [Route management](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/api-gateway/src/routes/routes.js): `services/api-gateway/src/routes/routes.js`

### Order orchestration

- [Worker consumer](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/index.js): `services/worker/src/index.js`
- [Saga orchestrator](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/saga/orchestrator.js): `services/worker/src/saga/orchestrator.js`
- [CMS adapter](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/cmsAdapter.js): `services/worker/src/adapters/cmsAdapter.js`
- [WMS adapter](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/wmsAdapter.js): `services/worker/src/adapters/wmsAdapter.js`
- [ROS adapter](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/worker/src/adapters/rosAdapter.js): `services/worker/src/adapters/rosAdapter.js`

### External services

- [CMS mock](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/cms-mock/src/index.js): `services/cms-mock/src/index.js`
- [WMS mock](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/wms-mock/src/index.js): `services/wms-mock/src/index.js`
- [ROS mock](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/ros-mock/src/index.js): `services/ros-mock/src/index.js`

### Live updates

- [Notification service](https://github.com/nisalasxlik/middleware_capstone/blob/main/services/notification/src/index.js): `services/notification/src/index.js`

### Other components

- **Client**
- **Driver**
- **Admin**
- **MongoDB**
- **RabbitMQ**

## Connections

- Client → Login: signs in (evidence: `README.md`)
- Driver → Login: signs in (evidence: `README.md`)
- Admin → Login: signs in (evidence: `README.md`)
- Login → API client: calls API (evidence: `frontend/src/pages/Login.jsx`)
- Order form → API client: submits order (evidence: `README.md`)
- Client dashboard → API client: loads orders (evidence: `frontend/src/pages/client/Dashboard.jsx`)
- Admin dashboard → API client: admin requests (evidence: `frontend/src/pages/admin/Dashboard.jsx`)
- Driver manifest → API client: loads manifest (evidence: `frontend/src/pages/driver/Manifest.jsx`)
- Delivery confirmation → API client: confirms delivery (evidence: `README.md`)
- Client dashboard → Socket hook: subscribes updates (evidence: `frontend/src/pages/client/Dashboard.jsx`)
- Admin dashboard → Socket hook: subscribes updates (evidence: `frontend/src/pages/admin/Dashboard.jsx`)
- Driver manifest → Socket hook: subscribes updates (evidence: `frontend/src/pages/driver/Manifest.jsx`)
- API client → Express gateway: REST requests (evidence: `README.md`)
- Socket hook → Notification service: opens WebSocket (evidence: `frontend/src/hooks/useSocket.js`)
- Express gateway → Auth routes: mounts routes (evidence: `services/api-gateway/src/index.js`)
- Express gateway → Order routes: mounts routes (evidence: `services/api-gateway/src/index.js`)
- Express gateway → Driver routes: mounts routes (evidence: `services/api-gateway/src/index.js`)
- Express gateway → Admin routes: mounts routes (evidence: `services/api-gateway/src/index.js`)
- Express gateway → Route management: mounts routes (evidence: `services/api-gateway/src/index.js`)
- Auth routes → MongoDB: stores users (evidence: `services/api-gateway/src/routes/auth.js`)
- Express gateway → MongoDB: connects database (evidence: `services/api-gateway/src/index.js`)
- Order routes → RabbitMQ: queues intake (evidence: `README.md`)
- Route management → RabbitMQ: publishes event (evidence: `services/api-gateway/src/routes/routes.js`)
- RabbitMQ → Worker consumer: delivers intake (evidence: `README.md`)
- Worker consumer → Saga orchestrator: invokes saga (evidence: `services/worker/src/index.js`)
- Saga orchestrator → CMS adapter: calls CMS adapter (evidence: `services/worker/src/saga/orchestrator.js`)
- Saga orchestrator → WMS adapter: calls WMS adapter (evidence: `services/worker/src/saga/orchestrator.js`)
- Saga orchestrator → ROS adapter: calls ROS adapter (evidence: `services/worker/src/saga/orchestrator.js`)
- CMS adapter → CMS mock: SOAP requests (evidence: `README.md`)
- WMS adapter → WMS mock: TCP requests (evidence: `services/worker/src/adapters/wmsAdapter.js`)
- ROS adapter → ROS mock: REST requests (evidence: `README.md`)
- Worker consumer → RabbitMQ: publishes updates (evidence: `README.md`)
- RabbitMQ → Notification service: delivers events (evidence: `README.md`)
- Notification service → Driver: pushes updates (evidence: `README.md`)
- Notification service → Client: pushes updates (evidence: `README.md`)
