# jstmejosh/realtimeboardbackend architecture

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

- Interactive diagram: https://gitdiagram.com/jstmejosh/realtimeboardbackend
- Repository: https://github.com/jstmejosh/realtimeboardbackend

## Overview

RealTimeBoard is a Node.js backend for account authentication and room-scoped collaborative boards. The main workflows are REST-based signup, email verification, login, and password recovery; board creation and paginated history retrieval; and authenticated Socket.io room joining, messaging, editing, and deletion. Controllers and socket handlers own the operations that read and write the user, board, and message models. The README documents these capabilities; some unsampled modules are shown at their exact tree paths, with only documented or source-supported connections included.

Main entry points: [`server.js`](https://github.com/jstmejosh/realtimeboardbackend/blob/main/server.js) (HTTP and Socket server), [`controllers/authControllers.js`](https://github.com/jstmejosh/realtimeboardbackend/blob/main/controllers/authControllers.js) (Auth and recovery), [`routes/boardRoutes.js`](https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/boardRoutes.js) (Board routes), [`routes/authRoutes.js`](https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/authRoutes.js) (Auth routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_server["HTTP and Socket server<br/>[server.js]"]
  node_dbconnect["Database connection<br/>[db.js]"]
  node_validate["Validation middleware<br/>[validate.js]"]
end

subgraph group_auth["Authentication"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_authvalidate["Auth validation<br/>[authSchema.js]"]
  node_httpauth["HTTP JWT auth<br/>[verifyHttpToken.js]"]
  node_socketauth["Socket JWT auth<br/>[verifyToken.js]"]
  node_authcontroller["Auth and recovery<br/>[authControllers.js]"]
  node_otp["OTP generation<br/>[generateOTP.js]"]
  node_emailtemplates["Email templates<br/>[EmailTemplates.js]"]
  node_emailservice["Email delivery<br/>[sendEmail.js]"]
end

subgraph group_boards["Boards and messaging"]
  node_boardroutes["Board routes<br/>[boardRoutes.js]"]
  node_boardschema["Board validation<br/>[boardSchema.js]"]
  node_boardcontroller["Board API<br/>[boardController.js]"]
  node_sockethandlers["Board socket events<br/>[boardHandlers.js]"]
end

subgraph group_data["Persistence"]
  node_users[("User accounts<br/>[User.js]")]
  node_boardsmodel[("Boards and membership<br/>[Board.js]")]
  node_messages[("Messages<br/>[Message.js]")]
end

node_client(("Client"))
node_emailprovider["Resend"]
node_mongodb[("MongoDB")]

node_client -->|"HTTP requests"| node_server
node_server -->|"mounts routes"| node_authroutes
node_server -->|"mounts routes"| node_boardroutes
node_server -->|"verifies sockets"| node_socketauth
node_server -->|"registers handlers"| node_sockethandlers
node_server -->|"connects database"| node_dbconnect
node_authroutes -->|"validates requests"| node_validate
node_authroutes -->|"uses schemas"| node_authvalidate
node_authroutes -->|"dispatches auth"| node_authcontroller
node_boardroutes -->|"verifies requests"| node_httpauth
node_boardroutes -->|"validates requests"| node_validate
node_boardroutes -->|"uses schema"| node_boardschema
node_boardroutes -->|"dispatches boards"| node_boardcontroller
node_authcontroller -->|"reads and writes"| node_users
node_authcontroller -->|"generates codes"| node_otp
node_authcontroller -->|"renders email"| node_emailtemplates
node_authcontroller -->|"sends email"| node_emailservice
node_emailservice -->|"delivers through"| node_emailprovider
node_boardcontroller -->|"reads and writes"| node_boardsmodel
node_boardcontroller -->|"loads history"| node_messages
node_sockethandlers -->|"checks membership"| node_boardsmodel
node_sockethandlers -->|"creates and updates"| node_messages
node_client -->|"socket events"| node_sockethandlers
node_dbconnect -->|"connects to"| node_mongodb
node_users -->|"persists records"| node_mongodb
node_boardsmodel -->|"persists records"| node_mongodb
node_messages -->|"persists records"| node_mongodb

click node_server "https://github.com/jstmejosh/realtimeboardbackend/blob/main/server.js"
click node_dbconnect "https://github.com/jstmejosh/realtimeboardbackend/blob/main/config/db.js"
click node_authroutes "https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/authRoutes.js"
click node_boardroutes "https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/boardRoutes.js"
click node_authvalidate "https://github.com/jstmejosh/realtimeboardbackend/blob/main/validators/authSchema.js"
click node_boardschema "https://github.com/jstmejosh/realtimeboardbackend/blob/main/validators/boardSchema.js"
click node_validate "https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/validate.js"
click node_httpauth "https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/verifyHttpToken.js"
click node_socketauth "https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/verifyToken.js"
click node_authcontroller "https://github.com/jstmejosh/realtimeboardbackend/blob/main/controllers/authControllers.js"
click node_otp "https://github.com/jstmejosh/realtimeboardbackend/blob/main/utils/generateOTP.js"
click node_emailtemplates "https://github.com/jstmejosh/realtimeboardbackend/blob/main/templates/EmailTemplates.js"
click node_emailservice "https://github.com/jstmejosh/realtimeboardbackend/blob/main/services/sendEmail.js"
click node_boardcontroller "https://github.com/jstmejosh/realtimeboardbackend/blob/main/controllers/boardController.js"
click node_sockethandlers "https://github.com/jstmejosh/realtimeboardbackend/blob/main/sockets/boardHandlers.js"
click node_users "https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/User.js"
click node_boardsmodel "https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/Board.js"
click node_messages "https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/Message.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_dbconnect,node_validate,node_client toneBlue
class node_authroutes,node_authvalidate,node_httpauth,node_socketauth,node_authcontroller,node_otp,node_emailtemplates,node_emailservice,node_mongodb toneAmber
class node_boardroutes,node_boardschema,node_boardcontroller,node_sockethandlers toneMint
class node_users,node_boardsmodel,node_messages toneRose
class node_emailprovider toneIndigo
```

## Components

### Application entry

- [HTTP and Socket server](https://github.com/jstmejosh/realtimeboardbackend/blob/main/server.js): `server.js`
- [Database connection](https://github.com/jstmejosh/realtimeboardbackend/blob/main/config/db.js): `config/db.js`
- [Validation middleware](https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/validate.js): `middleware/validate.js`

### Authentication

- [Auth routes](https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/authRoutes.js): `routes/authRoutes.js`
- [Auth validation](https://github.com/jstmejosh/realtimeboardbackend/blob/main/validators/authSchema.js): `validators/authSchema.js`
- [HTTP JWT auth](https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/verifyHttpToken.js): `middleware/verifyHttpToken.js`
- [Socket JWT auth](https://github.com/jstmejosh/realtimeboardbackend/blob/main/middleware/verifyToken.js): `middleware/verifyToken.js`
- [Auth and recovery](https://github.com/jstmejosh/realtimeboardbackend/blob/main/controllers/authControllers.js): `controllers/authControllers.js`
- [OTP generation](https://github.com/jstmejosh/realtimeboardbackend/blob/main/utils/generateOTP.js): `utils/generateOTP.js`
- [Email templates](https://github.com/jstmejosh/realtimeboardbackend/blob/main/templates/EmailTemplates.js): `templates/EmailTemplates.js`
- [Email delivery](https://github.com/jstmejosh/realtimeboardbackend/blob/main/services/sendEmail.js): `services/sendEmail.js`

### Boards and messaging

- [Board routes](https://github.com/jstmejosh/realtimeboardbackend/blob/main/routes/boardRoutes.js): `routes/boardRoutes.js`
- [Board validation](https://github.com/jstmejosh/realtimeboardbackend/blob/main/validators/boardSchema.js): `validators/boardSchema.js`
- [Board API](https://github.com/jstmejosh/realtimeboardbackend/blob/main/controllers/boardController.js): `controllers/boardController.js`
- [Board socket events](https://github.com/jstmejosh/realtimeboardbackend/blob/main/sockets/boardHandlers.js): `sockets/boardHandlers.js`

### Persistence

- [User accounts](https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/User.js): `models/User.js`
- [Boards and membership](https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/Board.js): `models/Board.js`
- [Messages](https://github.com/jstmejosh/realtimeboardbackend/blob/main/models/Message.js): `models/Message.js`

### Other components

- **Client**
- **Resend**
- **MongoDB**

## Connections

- Client → HTTP and Socket server: HTTP requests
- HTTP and Socket server → Auth routes: mounts routes
- HTTP and Socket server → Board routes: mounts routes
- HTTP and Socket server → Socket JWT auth: verifies sockets
- HTTP and Socket server → Board socket events: registers handlers
- HTTP and Socket server → Database connection: connects database
- Auth routes → Validation middleware: validates requests
- Auth routes → Auth validation: uses schemas
- Auth routes → Auth and recovery: dispatches auth
- Board routes → HTTP JWT auth: verifies requests
- Board routes → Validation middleware: validates requests
- Board routes → Board validation: uses schema
- Board routes → Board API: dispatches boards
- Auth and recovery → User accounts: reads and writes
- Auth and recovery → OTP generation: generates codes
- Auth and recovery → Email templates: renders email
- Auth and recovery → Email delivery: sends email
- Email delivery → Resend: delivers through
- Board API → Boards and membership: reads and writes
- Board API → Messages: loads history
- Board socket events → Boards and membership: checks membership
- Board socket events → Messages: creates and updates
- Client → Board socket events: socket events
- Database connection → MongoDB: connects to
- User accounts → MongoDB: persists records
- Boards and membership → MongoDB: persists records
- Messages → MongoDB: persists records
