# bohdanzadoienko/nodejs-auth architecture

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

- Interactive diagram: https://gitdiagram.com/bohdanzadoienko/nodejs-auth
- Repository: https://github.com/bohdanzadoienko/nodejs-auth

## Overview

This repository is a Node.js/Express user-authentication and user-management API. Clients register or log in, then use the session cookie to access protected user listing and owner-restricted update/delete routes. Authentication checks and route handlers use the user persistence layer, which stores account and session data in MongoDB. The application also exposes Swagger UI documentation. The README gives no capability details; the graph follows the sampled routes and source, with the user-list handler represented by its tree path only.

Main entry points: [`src/db/users.ts`](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/db/users.ts) (User model and queries), [`src/router/users.ts`](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/users.ts) (User routes), [`src/index.ts`](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/index.ts) (Express server), [`src/router/index.ts`](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/index.ts) (Route assembly)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["API application"]
  node_server["Express server<br/>[index.ts]"]
  node_router["Route assembly<br/>[index.ts]"]
  node_swagger_ui["Swagger UI<br/>[index.ts]"]
  node_swagger_spec["Swagger specification"]
end

subgraph group_auth["Authentication"]
  node_auth_routes["Auth routes<br/>[authentication.ts]"]
  node_register["Register<br/>[register.ts]"]
  node_login["Login<br/>[login.ts]"]
  node_helpers["Credential helpers<br/>[index.ts]"]
end

subgraph group_users["User management"]
  node_user_routes["User routes<br/>[users.ts]"]
  node_auth_middleware["Session check<br/>[index.ts]"]
  node_owner_middleware["Owner check<br/>[index.ts]"]
  node_list_users["List users<br/>[getAllUsers.ts]"]
  node_update_user["Update user<br/>[updateUser.ts]"]
  node_delete_user["Delete user<br/>[deleteUserById.ts]"]
end

subgraph group_data["Persistence"]
  node_user_store[("User model and queries<br/>[users.ts]")]
end

node_client(("API client"))
node_mongo[("MongoDB")]

node_client -->|"sends requests"| node_server
node_server -->|"mounts routes"| node_router
node_router -->|"registers routes"| node_auth_routes
node_router -->|"registers routes"| node_user_routes
node_auth_routes -->|"dispatches"| node_register
node_auth_routes -->|"dispatches"| node_login
node_register -->|"checks and creates"| node_user_store
node_register -->|"generates salt"| node_helpers
node_login -->|"looks up and saves"| node_user_store
node_login -->|"hashes credentials"| node_helpers
node_user_routes -->|"checks session"| node_auth_middleware
node_user_routes -->|"checks ownership"| node_owner_middleware
node_user_routes -->|"dispatches"| node_list_users
node_user_routes -->|"dispatches"| node_update_user
node_user_routes -->|"dispatches"| node_delete_user
node_auth_middleware -->|"looks up session"| node_user_store
node_update_user -->|"reads and saves"| node_user_store
node_delete_user -->|"deletes by id"| node_user_store
node_list_users -->|"unknown access"| node_user_store
node_user_store -->|"queries and writes"| node_mongo
node_server -->|"serves docs"| node_swagger_ui
node_swagger_ui -->|"loads specification"| node_swagger_spec

click node_server "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/index.ts"
click node_router "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/index.ts"
click node_auth_routes "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/authentication.ts"
click node_register "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/auth/register.ts"
click node_login "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/auth/login.ts"
click node_helpers "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/helpers/index.ts"
click node_user_routes "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/users.ts"
click node_auth_middleware "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/middlewares/index.ts"
click node_owner_middleware "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/middlewares/index.ts"
click node_list_users "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/getAllUsers.ts"
click node_update_user "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/updateUser.ts"
click node_delete_user "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/deleteUserById.ts"
click node_user_store "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/db/users.ts"
click node_swagger_ui "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/index.ts"
click node_swagger_spec "https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/swagger_output.json"

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_router,node_swagger_ui,node_swagger_spec,node_client toneBlue
class node_auth_routes,node_register,node_login,node_helpers,node_mongo toneAmber
class node_user_routes,node_auth_middleware,node_owner_middleware,node_list_users,node_update_user,node_delete_user toneMint
class node_user_store toneRose
```

## Components

### API application

- [Express server](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/index.ts): `src/index.ts`
- [Route assembly](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/index.ts): `src/router/index.ts`
- [Swagger UI](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/index.ts): `src/index.ts`
- [Swagger specification](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/swagger_output.json): `src/swagger_output.json`

### Authentication

- [Auth routes](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/authentication.ts): `src/router/authentication.ts`
- [Register](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/auth/register.ts): `src/controllers/auth/register.ts`
- [Login](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/auth/login.ts): `src/controllers/auth/login.ts`
- [Credential helpers](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/helpers/index.ts): `src/helpers/index.ts`

### User management

- [User routes](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/router/users.ts): `src/router/users.ts`
- [Session check](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/middlewares/index.ts): `src/middlewares/index.ts`
- [Owner check](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/middlewares/index.ts): `src/middlewares/index.ts`
- [List users](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/getAllUsers.ts): `src/controllers/users/getAllUsers.ts`
- [Update user](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/updateUser.ts): `src/controllers/users/updateUser.ts`
- [Delete user](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/controllers/users/deleteUserById.ts): `src/controllers/users/deleteUserById.ts`

### Persistence

- [User model and queries](https://github.com/bohdanzadoienko/nodejs-auth/blob/main/src/db/users.ts): `src/db/users.ts`

### Other components

- **API client**
- **MongoDB**

## Connections

- API client → Express server: sends requests
- Express server → Route assembly: mounts routes
- Route assembly → Auth routes: registers routes
- Route assembly → User routes: registers routes
- Auth routes → Register: dispatches
- Auth routes → Login: dispatches
- Register → User model and queries: checks and creates
- Register → Credential helpers: generates salt
- Login → User model and queries: looks up and saves
- Login → Credential helpers: hashes credentials
- User routes → Session check: checks session
- User routes → Owner check: checks ownership
- User routes → List users: dispatches
- User routes → Update user: dispatches
- User routes → Delete user: dispatches
- Session check → User model and queries: looks up session
- Update user → User model and queries: reads and saves
- Delete user → User model and queries: deletes by id
- List users → User model and queries: unknown access
- User model and queries → MongoDB: queries and writes
- Express server → Swagger UI: serves docs
- Swagger UI → Swagger specification: loads specification
