# nitin-o/iot-platform-backend architecture

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

- Interactive diagram: https://gitdiagram.com/nitin-o/iot-platform-backend
- Repository: https://github.com/nitin-o/iot-platform-backend

## Overview

This is an Express backend branded as an IoT Platform API; the sampled product behavior is primarily account authentication and session management. A client sends requests through the app and auth routes to registration, login, logout, refresh-token, or current-user handlers. Those handlers and JWT middleware use user and session models; login and refresh also use token utilities. Startup connects MongoDB before listening, while request logging flows through Morgan into Winston. The README contains no usable capability documentation, so the map reflects the sampled runtime; unsampled error handling and other routes are omitted.

Main entry points: [`src/controllers/auth.controller.js`](https://github.com/nitin-o/iot-platform-backend/blob/main/src/controllers/auth.controller.js) (Auth Controller), [`src/app.js`](https://github.com/nitin-o/iot-platform-backend/blob/main/src/app.js) (Express App), [`src/routes/auth.routes.js`](https://github.com/nitin-o/iot-platform-backend/blob/main/src/routes/auth.routes.js) (Auth Routes), [`src/middleware/auth.middleware.js`](https://github.com/nitin-o/iot-platform-backend/blob/main/src/middleware/auth.middleware.js) (JWT Middleware)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP Runtime"]
  node_entry["Server Startup<br/>[index.js]"]
  node_app["Express App<br/>[app.js]"]
  node_routes["Auth Routes<br/>[auth.routes.js]"]
end

subgraph group_auth["Authentication"]
  node_controller["Auth Controller<br/>[auth.controller.js]"]
  node_authmw["JWT Middleware<br/>[auth.middleware.js]"]
  node_tokens["Token Utilities<br/>[token.utils.js]"]
end

subgraph group_data["Persistence"]
  node_users[("User Model<br/>[user.model.js]")]
  node_sessions[("Session Model<br/>[session.model.js]")]
  node_dbconn["Mongo Connector<br/>[index.js]"]
end

subgraph group_logging["Request Logging"]
  node_requestlog["Access Log Middleware"]
  node_logger["Winston Logger<br/>[logger.js]"]
end

node_client(("API Client"))
node_mongodb[("MongoDB")]

node_client -->|"sends requests"| node_app
node_entry -->|"connects first"| node_dbconn
node_entry -->|"starts listener"| node_app
node_dbconn -->|"connects"| node_mongodb
node_app -->|"mounts auth routes"| node_routes
node_app -->|"registers middleware"| node_requestlog
node_routes -->|"dispatches auth requests"| node_controller
node_routes -->|"guards protected routes"| node_authmw
node_controller -->|"reads and writes users"| node_users
node_controller -->|"creates and updates sessions"| node_sessions
node_controller -->|"hashes tokens and reads expiry"| node_tokens
node_controller -->|"generates JWTs"| node_users
node_authmw -->|"checks active session"| node_sessions
node_authmw -->|"loads session user"| node_users
node_requestlog -->|"writes access events"| node_logger

click node_entry "https://github.com/nitin-o/iot-platform-backend/blob/main/index.js"
click node_app "https://github.com/nitin-o/iot-platform-backend/blob/main/src/app.js"
click node_routes "https://github.com/nitin-o/iot-platform-backend/blob/main/src/routes/auth.routes.js"
click node_controller "https://github.com/nitin-o/iot-platform-backend/blob/main/src/controllers/auth.controller.js"
click node_authmw "https://github.com/nitin-o/iot-platform-backend/blob/main/src/middleware/auth.middleware.js"
click node_tokens "https://github.com/nitin-o/iot-platform-backend/blob/main/src/utils/token.utils.js"
click node_users "https://github.com/nitin-o/iot-platform-backend/blob/main/src/models/user.model.js"
click node_sessions "https://github.com/nitin-o/iot-platform-backend/blob/main/src/models/session.model.js"
click node_dbconn "https://github.com/nitin-o/iot-platform-backend/blob/main/src/db/index.js"
click node_requestlog "https://github.com/nitin-o/iot-platform-backend/blob/main/src/middleware/logger.middleware.js"
click node_logger "https://github.com/nitin-o/iot-platform-backend/blob/main/src/utils/logger.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_entry,node_app,node_routes,node_client toneBlue
class node_controller,node_authmw,node_tokens,node_mongodb toneAmber
class node_users,node_sessions,node_dbconn toneMint
class node_requestlog,node_logger toneRose
```

## Components

### HTTP Runtime

- [Server Startup](https://github.com/nitin-o/iot-platform-backend/blob/main/index.js): `index.js`
- [Express App](https://github.com/nitin-o/iot-platform-backend/blob/main/src/app.js): `src/app.js`
- [Auth Routes](https://github.com/nitin-o/iot-platform-backend/blob/main/src/routes/auth.routes.js): `src/routes/auth.routes.js`

### Authentication

- [Auth Controller](https://github.com/nitin-o/iot-platform-backend/blob/main/src/controllers/auth.controller.js): `src/controllers/auth.controller.js`
- [JWT Middleware](https://github.com/nitin-o/iot-platform-backend/blob/main/src/middleware/auth.middleware.js): `src/middleware/auth.middleware.js`
- [Token Utilities](https://github.com/nitin-o/iot-platform-backend/blob/main/src/utils/token.utils.js): `src/utils/token.utils.js`

### Persistence

- [User Model](https://github.com/nitin-o/iot-platform-backend/blob/main/src/models/user.model.js): `src/models/user.model.js`
- [Session Model](https://github.com/nitin-o/iot-platform-backend/blob/main/src/models/session.model.js): `src/models/session.model.js`
- [Mongo Connector](https://github.com/nitin-o/iot-platform-backend/blob/main/src/db/index.js): `src/db/index.js`

### Request Logging

- [Access Log Middleware](https://github.com/nitin-o/iot-platform-backend/blob/main/src/middleware/logger.middleware.js): `src/middleware/logger.middleware.js`
- [Winston Logger](https://github.com/nitin-o/iot-platform-backend/blob/main/src/utils/logger.js): `src/utils/logger.js`

### Other components

- **API Client**
- **MongoDB**

## Connections

- API Client → Express App: sends requests (evidence: `src/app.js`)
- Server Startup → Mongo Connector: connects first (evidence: `index.js`)
- Server Startup → Express App: starts listener (evidence: `index.js`)
- Mongo Connector → MongoDB: connects (evidence: `src/db/index.js`)
- Express App → Auth Routes: mounts auth routes (evidence: `src/app.js`)
- Express App → Access Log Middleware: registers middleware (evidence: `src/app.js`)
- Auth Routes → Auth Controller: dispatches auth requests (evidence: `src/routes/auth.routes.js`)
- Auth Routes → JWT Middleware: guards protected routes (evidence: `src/routes/auth.routes.js`)
- Auth Controller → User Model: reads and writes users (evidence: `src/controllers/auth.controller.js`)
- Auth Controller → Session Model: creates and updates sessions (evidence: `src/controllers/auth.controller.js`)
- Auth Controller → Token Utilities: hashes tokens and reads expiry (evidence: `src/controllers/auth.controller.js`)
- Auth Controller → User Model: generates JWTs (evidence: `src/controllers/auth.controller.js`)
- JWT Middleware → Session Model: checks active session (evidence: `src/middleware/auth.middleware.js`)
- JWT Middleware → User Model: loads session user (evidence: `src/middleware/auth.middleware.js`)
- Access Log Middleware → Winston Logger: writes access events (evidence: `src/middleware/logger.middleware.js`)
