# naghiyev/backend-session architecture

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

- Interactive diagram: https://gitdiagram.com/naghiyev/backend-session
- Repository: https://github.com/naghiyev/backend-session

## Overview

Task Management API is a Spring Boot REST service for user and task management. Clients register and retrieve users, create and query tasks (including by status or user), update or delete tasks, and authenticate to obtain a JWT for protected requests. Controllers delegate business operations to services, which use repositories backed by PostgreSQL; task lookups also use caching. README documents JWT and role-based security, caching, and the PostgreSQL-backed stack. The sampled sources confirm the controller, service, repository, JWT, and error-handling paths; security-filter wiring and cache configuration details are not fully shown.

Main entry points: [`src/main/java/az/training/taskmanagement/service/impl/TaskServiceImpl.java`](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/service/impl/TaskServiceImpl.java) (Task Service), [`src/main/java/az/training/taskmanagement/security/JwtAuthFilter.java`](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/JwtAuthFilter.java) (JWT Auth Filter), [`src/main/java/az/training/taskmanagement/controller/UserController.java`](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/UserController.java) (User Controller), [`src/main/java/az/training/taskmanagement/controller/AuthController.java`](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/AuthController.java) (Auth Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_task_controller["Task Controller"]
  node_user_controller["User Controller"]
  node_auth_controller["Auth Controller"]
end

subgraph group_domain["Business Services"]
  node_task_service["Task Service"]
  node_user_service["User Service"]
end

subgraph group_data["Persistence"]
  node_task_repository["Task Repository"]
  node_user_repository["User Repository"]
  node_postgres[("PostgreSQL")]
end

subgraph group_security["JWT Security"]
  node_jwt_filter["JWT Auth Filter<br/>[JwtAuthFilter.java]"]
  node_security_config["Security Config"]
  node_jwt_service["JWT Service<br/>[JwtService.java]"]
end

subgraph group_support["Errors and Cache"]
  node_exception_handler["Exception Handler"]
  node_task_cache[("Task Cache")]
end

node_client(("API Client"))

node_client -->|"login request"| node_auth_controller
node_auth_controller -->|"generates token"| node_jwt_service
node_jwt_service -->|"returns token"| node_auth_controller
node_client -->|"Bearer request"| node_jwt_filter
node_jwt_filter -->|"validates token"| node_jwt_service
node_security_config -->|"configures filter"| node_jwt_filter
node_jwt_filter -->|"dispatches request"| node_task_controller
node_jwt_filter -->|"dispatches request"| node_user_controller
node_jwt_filter -->|"dispatches request"| node_auth_controller
node_task_controller -->|"delegates tasks"| node_task_service
node_user_controller -->|"delegates users"| node_user_service
node_user_controller -->|"requests user tasks"| node_task_service
node_task_service -->|"reads and writes"| node_task_repository
node_task_service -->|"checks users"| node_user_repository
node_user_service -->|"reads and writes"| node_user_repository
node_task_repository -->|"persists tasks"| node_postgres
node_user_repository -->|"persists users"| node_postgres
node_task_service -->|"caches task lookup"| node_task_cache
node_task_service -->|"evicts on changes"| node_task_cache
node_task_service -->|"raises errors"| node_exception_handler
node_user_service -->|"raises errors"| node_exception_handler
node_task_controller -->|"validation errors"| node_exception_handler
node_user_controller -->|"validation errors"| node_exception_handler
node_task_controller -->|"returns task data"| node_client
node_user_controller -->|"returns user data"| node_client
node_auth_controller -->|"returns auth response"| node_client
node_exception_handler -->|"returns API error"| node_client

click node_task_controller "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/TaskController.java"
click node_user_controller "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/UserController.java"
click node_auth_controller "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/AuthController.java"
click node_task_service "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/service/impl/TaskServiceImpl.java"
click node_user_service "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/service/impl/UserServiceImpl.java"
click node_task_repository "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/repository/TaskRepository.java"
click node_user_repository "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/repository/UserRepository.java"
click node_jwt_filter "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/JwtAuthFilter.java"
click node_security_config "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/SecurityConfig.java"
click node_jwt_service "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/JwtService.java"
click node_exception_handler "https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/exception/GlobalExceptionHandler.java"

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_task_controller,node_user_controller,node_auth_controller,node_client toneBlue
class node_task_service,node_user_service toneAmber
class node_task_repository,node_user_repository,node_postgres toneMint
class node_jwt_filter,node_security_config,node_jwt_service toneRose
class node_exception_handler,node_task_cache toneIndigo
```

## Components

### REST API

- [Task Controller](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/TaskController.java): `src/main/java/az/training/taskmanagement/controller/TaskController.java`
- [User Controller](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/UserController.java): `src/main/java/az/training/taskmanagement/controller/UserController.java`
- [Auth Controller](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/controller/AuthController.java): `src/main/java/az/training/taskmanagement/controller/AuthController.java`

### Business Services

- [Task Service](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/service/impl/TaskServiceImpl.java): `src/main/java/az/training/taskmanagement/service/impl/TaskServiceImpl.java`
- [User Service](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/service/impl/UserServiceImpl.java): `src/main/java/az/training/taskmanagement/service/impl/UserServiceImpl.java`

### Persistence

- [Task Repository](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/repository/TaskRepository.java): `src/main/java/az/training/taskmanagement/repository/TaskRepository.java`
- [User Repository](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/repository/UserRepository.java): `src/main/java/az/training/taskmanagement/repository/UserRepository.java`
- **PostgreSQL**

### JWT Security

- [JWT Auth Filter](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/JwtAuthFilter.java): `src/main/java/az/training/taskmanagement/security/JwtAuthFilter.java`
- [Security Config](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/SecurityConfig.java): `src/main/java/az/training/taskmanagement/security/SecurityConfig.java`
- [JWT Service](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/security/JwtService.java): `src/main/java/az/training/taskmanagement/security/JwtService.java`

### Errors and Cache

- [Exception Handler](https://github.com/naghiyev/backend-session/blob/main/src/main/java/az/training/taskmanagement/exception/GlobalExceptionHandler.java): `src/main/java/az/training/taskmanagement/exception/GlobalExceptionHandler.java`
- **Task Cache**

### Other components

- **API Client**

## Connections

- API Client → Auth Controller: login request
- Auth Controller → JWT Service: generates token
- JWT Service → Auth Controller: returns token
- API Client → JWT Auth Filter: Bearer request
- JWT Auth Filter → JWT Service: validates token
- Security Config → JWT Auth Filter: configures filter
- JWT Auth Filter → Task Controller: dispatches request
- JWT Auth Filter → User Controller: dispatches request
- JWT Auth Filter → Auth Controller: dispatches request
- Task Controller → Task Service: delegates tasks
- User Controller → User Service: delegates users
- User Controller → Task Service: requests user tasks
- Task Service → Task Repository: reads and writes
- Task Service → User Repository: checks users
- User Service → User Repository: reads and writes
- Task Repository → PostgreSQL: persists tasks
- User Repository → PostgreSQL: persists users
- Task Service → Task Cache: caches task lookup
- Task Service → Task Cache: evicts on changes
- Task Service → Exception Handler: raises errors
- User Service → Exception Handler: raises errors
- Task Controller → Exception Handler: validation errors
- User Controller → Exception Handler: validation errors
- Task Controller → API Client: returns task data
- User Controller → API Client: returns user data
- Auth Controller → API Client: returns auth response
- Exception Handler → API Client: returns API error
