# teybearr/itelect2-project architecture

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

- Interactive diagram: https://gitdiagram.com/teybearr/itelect2-project
- Repository: https://github.com/teybearr/itelect2-project

## Overview

This repository is an Express task-management API with registration and login, bearer-token authentication, role-based task authorization, task CRUD, and centralized error responses. The main workflow runs from HTTP routes through middleware and controllers to Sequelize models and the database. The README documents public task reads, protected writes, and admin-only deletion. A separate `src/` example exercises task utilities and fetches sample users; its utility implementation was not excerpted, so that branch is shown only where the excerpts establish calls.

Main entry points: [`models/index.cjs`](https://github.com/teybearr/itelect2-project/blob/main/models/index.cjs) (Sequelize registry), [`routes/tasks.js`](https://github.com/teybearr/itelect2-project/blob/main/routes/tasks.js) (Task routes), [`server.js`](https://github.com/teybearr/itelect2-project/blob/main/server.js) (Express server), [`controllers/authController.js`](https://github.com/teybearr/itelect2-project/blob/main/controllers/authController.js) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API routing"]
  node_server["Express server<br/>[server.js]"]
  node_task_routes["Task routes<br/>[tasks.js]"]
  node_auth_routes["Auth routes<br/>[auth.js]"]
  node_error_handler["Error responses<br/>[errorHandler.js]"]
end

subgraph group_security["Auth and access"]
  node_auth_controller["Auth controller<br/>[authController.js]"]
  node_token_check["Token verification<br/>[verifyToken.js]"]
  node_role_check["Role authorization<br/>[requireRole.js]"]
end

subgraph group_tasks["Task management"]
  node_task_controller["Task controller<br/>[taskController.js]"]
end

subgraph group_persistence["Persistence"]
  node_orm_registry["Sequelize registry<br/>[index.cjs]"]
  node_task_model["Task model<br/>[task.cjs]"]
  node_user_model["User model<br/>[user.cjs]"]
  node_db_config["Database config<br/>[config.cjs]"]
end

subgraph group_examples["Standalone examples"]
  node_demo_app["Example runner<br/>[app.js]"]
  node_task_utils["Task utilities<br/>[utils.js]"]
  node_sample_api["Sample-user fetch<br/>[api.js]"]
end

node_client(("API client"))
node_database[("SQL database")]
node_jsonplaceholder["JSONPlaceholder"]

node_client -->|"sends requests"| node_server
node_server -->|"mounts routes"| node_task_routes
node_server -->|"mounts routes"| node_auth_routes
node_server -->|"handles errors"| node_error_handler
node_task_routes -->|"dispatches"| node_task_controller
node_task_routes -->|"dispatches user list"| node_auth_controller
node_task_routes -->|"checks token"| node_token_check
node_task_routes -->|"checks role"| node_role_check
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"uses models"| node_orm_registry
node_task_controller -->|"uses models"| node_orm_registry
node_orm_registry -->|"loads model"| node_task_model
node_orm_registry -->|"loads model"| node_user_model
node_orm_registry -->|"reads config"| node_db_config
node_orm_registry -->|"connects to"| node_database
node_demo_app -->|"calls utilities"| node_task_utils
node_demo_app -->|"fetches sample users"| node_sample_api
node_sample_api -->|"fetches users"| node_jsonplaceholder

click node_server "https://github.com/teybearr/itelect2-project/blob/main/server.js"
click node_task_routes "https://github.com/teybearr/itelect2-project/blob/main/routes/tasks.js"
click node_auth_routes "https://github.com/teybearr/itelect2-project/blob/main/routes/auth.js"
click node_error_handler "https://github.com/teybearr/itelect2-project/blob/main/middleware/errorHandler.js"
click node_auth_controller "https://github.com/teybearr/itelect2-project/blob/main/controllers/authController.js"
click node_token_check "https://github.com/teybearr/itelect2-project/blob/main/middleware/verifyToken.js"
click node_role_check "https://github.com/teybearr/itelect2-project/blob/main/middleware/requireRole.js"
click node_task_controller "https://github.com/teybearr/itelect2-project/blob/main/controllers/taskController.js"
click node_orm_registry "https://github.com/teybearr/itelect2-project/blob/main/models/index.cjs"
click node_task_model "https://github.com/teybearr/itelect2-project/blob/main/models/task.cjs"
click node_user_model "https://github.com/teybearr/itelect2-project/blob/main/models/user.cjs"
click node_db_config "https://github.com/teybearr/itelect2-project/blob/main/config/config.cjs"
click node_demo_app "https://github.com/teybearr/itelect2-project/blob/main/src/app.js"
click node_task_utils "https://github.com/teybearr/itelect2-project/blob/main/src/utils.js"
click node_sample_api "https://github.com/teybearr/itelect2-project/blob/main/src/api.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_task_routes,node_auth_routes,node_error_handler,node_client toneBlue
class node_auth_controller,node_token_check,node_role_check,node_database toneAmber
class node_task_controller toneMint
class node_orm_registry,node_task_model,node_user_model,node_db_config toneRose
class node_demo_app,node_task_utils,node_sample_api,node_jsonplaceholder toneIndigo
```

## Components

### API routing

- [Express server](https://github.com/teybearr/itelect2-project/blob/main/server.js): `server.js`
- [Task routes](https://github.com/teybearr/itelect2-project/blob/main/routes/tasks.js): `routes/tasks.js`
- [Auth routes](https://github.com/teybearr/itelect2-project/blob/main/routes/auth.js): `routes/auth.js`
- [Error responses](https://github.com/teybearr/itelect2-project/blob/main/middleware/errorHandler.js): `middleware/errorHandler.js`

### Auth and access

- [Auth controller](https://github.com/teybearr/itelect2-project/blob/main/controllers/authController.js): `controllers/authController.js`
- [Token verification](https://github.com/teybearr/itelect2-project/blob/main/middleware/verifyToken.js): `middleware/verifyToken.js`
- [Role authorization](https://github.com/teybearr/itelect2-project/blob/main/middleware/requireRole.js): `middleware/requireRole.js`

### Task management

- [Task controller](https://github.com/teybearr/itelect2-project/blob/main/controllers/taskController.js): `controllers/taskController.js`

### Persistence

- [Sequelize registry](https://github.com/teybearr/itelect2-project/blob/main/models/index.cjs): `models/index.cjs`
- [Task model](https://github.com/teybearr/itelect2-project/blob/main/models/task.cjs): `models/task.cjs`
- [User model](https://github.com/teybearr/itelect2-project/blob/main/models/user.cjs): `models/user.cjs`
- [Database config](https://github.com/teybearr/itelect2-project/blob/main/config/config.cjs): `config/config.cjs`

### Standalone examples

- [Example runner](https://github.com/teybearr/itelect2-project/blob/main/src/app.js): `src/app.js`
- [Task utilities](https://github.com/teybearr/itelect2-project/blob/main/src/utils.js): `src/utils.js`
- [Sample-user fetch](https://github.com/teybearr/itelect2-project/blob/main/src/api.js): `src/api.js`

### Other components

- **API client**
- **SQL database**
- **JSONPlaceholder**

## Connections

- API client → Express server: sends requests (evidence: `server.js`)
- Express server → Task routes: mounts routes (evidence: `server.js`)
- Express server → Auth routes: mounts routes (evidence: `server.js`)
- Express server → Error responses: handles errors (evidence: `server.js`)
- Task routes → Task controller: dispatches (evidence: `routes/tasks.js`)
- Task routes → Auth controller: dispatches user list (evidence: `routes/tasks.js`)
- Task routes → Token verification: checks token (evidence: `routes/tasks.js`)
- Task routes → Role authorization: checks role (evidence: `routes/tasks.js`)
- Auth routes → Auth controller: dispatches (evidence: `routes/auth.js`)
- Auth controller → Sequelize registry: uses models (evidence: `controllers/authController.js`)
- Task controller → Sequelize registry: uses models (evidence: `controllers/taskController.js`)
- Sequelize registry → Task model: loads model (evidence: `models/index.cjs`)
- Sequelize registry → User model: loads model (evidence: `models/index.cjs`)
- Sequelize registry → Database config: reads config (evidence: `models/index.cjs`)
- Sequelize registry → SQL database: connects to (evidence: `models/index.cjs`)
- Example runner → Task utilities: calls utilities (evidence: `src/app.js`)
- Example runner → Sample-user fetch: fetches sample users (evidence: `src/app.js`)
- Sample-user fetch → JSONPlaceholder: fetches users (evidence: `src/api.js`)
