# urbish-mulmi/postgres-express-crud-api architecture

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

- Interactive diagram: https://gitdiagram.com/urbish-mulmi/postgres-express-crud-api
- Repository: https://github.com/urbish-mulmi/postgres-express-crud-api

## Overview

This is a PostgreSQL-backed Express CRUD API for managing users. Requests enter through the Express app and user routes; create and update requests are validated before controllers call the user model, which queries PostgreSQL and returns results for HTTP responses. At startup, the app verifies database connectivity, creates the users table, and only then listens. The README documents all five CRUD operations and connection pooling. The graph follows the supplied source; Docker hosting is documented, but no Docker configuration is present in the tree.

Main entry points: [`src/index.js`](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/index.js) (Express App), [`src/config/db.js`](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/config/db.js) (Connection Pool), [`src/routes/userRoutes.js`](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/routes/userRoutes.js) (User Routes), [`src/controllers/userController.js`](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/controllers/userController.js) (User Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_app["Express App<br/>[index.js]"]
  node_routes["User Routes<br/>[userRoutes.js]"]
  node_validator["Input Validator"]
  node_controller["User Controller<br/>[userController.js]"]
  node_errors["Error Handler"]
end

subgraph group_data["User Data"]
  node_model["User Model<br/>[userModel.js]"]
  node_pool["Connection Pool<br/>[db.js]"]
  node_postgres[("PostgreSQL")]
end

subgraph group_startup["Startup"]
  node_table["Users Table Setup<br/>[createUserTable.js]"]
end

node_client(("API Client"))

node_client -->|"sends requests"| node_app
node_app -->|"mounts /api"| node_routes
node_routes -->|"validates writes"| node_validator
node_routes -->|"dispatches"| node_controller
node_controller -->|"calls CRUD"| node_model
node_model -->|"queries"| node_pool
node_pool -->|"executes SQL"| node_postgres
node_controller -->|"forwards errors"| node_errors
node_app -->|"registers handler"| node_errors
node_app -->|"checks connection"| node_pool
node_app -->|"initializes table"| node_table
node_table -->|"creates schema"| node_pool
node_app -->|"returns responses"| node_client

click node_app "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/index.js"
click node_routes "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/routes/userRoutes.js"
click node_validator "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/middlewares/inputValidator.Middleware.js"
click node_controller "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/controllers/userController.js"
click node_errors "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/middlewares/errorHandler.Middleware.js"
click node_model "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/models/userModel.js"
click node_pool "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/config/db.js"
click node_table "https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/data/createUserTable.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_app,node_routes,node_validator,node_controller,node_errors,node_client toneBlue
class node_model,node_pool,node_postgres toneAmber
class node_table toneMint
```

## Components

### HTTP API

- [Express App](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/index.js): `src/index.js`
- [User Routes](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/routes/userRoutes.js): `src/routes/userRoutes.js`
- [Input Validator](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/middlewares/inputValidator.Middleware.js): `src/middlewares/inputValidator.Middleware.js`
- [User Controller](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/controllers/userController.js): `src/controllers/userController.js`
- [Error Handler](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/middlewares/errorHandler.Middleware.js): `src/middlewares/errorHandler.Middleware.js`

### User Data

- [User Model](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/models/userModel.js): `src/models/userModel.js`
- [Connection Pool](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/config/db.js): `src/config/db.js`
- **PostgreSQL**

### Startup

- [Users Table Setup](https://github.com/urbish-mulmi/postgres-express-crud-api/blob/main/src/data/createUserTable.js): `src/data/createUserTable.js`

### Other components

- **API Client**

## Connections

- API Client → Express App: sends requests
- Express App → User Routes: mounts /api
- User Routes → Input Validator: validates writes
- User Routes → User Controller: dispatches
- User Controller → User Model: calls CRUD
- User Model → Connection Pool: queries
- Connection Pool → PostgreSQL: executes SQL
- User Controller → Error Handler: forwards errors
- Express App → Error Handler: registers handler
- Express App → Connection Pool: checks connection
- Express App → Users Table Setup: initializes table
- Users Table Setup → Connection Pool: creates schema
- Express App → API Client: returns responses
