# ferdinaldopelembe/tasks-api architecture

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

- Interactive diagram: https://gitdiagram.com/ferdinaldopelembe/tasks-api
- Repository: https://github.com/ferdinaldopelembe/tasks-api

## Overview

Fasks is a Spring Boot REST API for personal task management. Its principal workflow is: clients register or log in, receive a JWT, then use authenticated task endpoints to create, list, filter, and update their own tasks; users can also manage their profile or account. Controllers delegate to services, which apply ownership and validation rules and use Spring Data repositories for persistence. The README documents local file-backed H2 storage and interactive API documentation. Some subsystems are represented from README or the source index; their internal implementation details were not sampled.

Main entry points: [`src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java`](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java) (User Repository), [`src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java`](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java) (Auth Endpoints), [`src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java`](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java) (Task Endpoints), [`src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java`](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java) (User Endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_app["Spring Boot Entry"]
  node_auth_controller["Auth Endpoints"]
  node_task_controller["Task Endpoints"]
  node_user_controller["User Endpoints"]
  node_dto["Request And Response DTOs"]
end

subgraph group_domain["Account And Tasks"]
  node_auth_service["Account Auth<br/>[AuthService.java]"]
  node_task_service["Task Operations<br/>[TaskService.java]"]
  node_user_service["Profile Operations<br/>[UserService.java]"]
  node_task_model["Task Entity<br/>[Task.java]"]
  node_user_model["User Entity<br/>[User.java]"]
  node_task_values["Priority And Status"]
end

subgraph group_security["Authentication"]
  node_security_config["Security Rules"]
  node_jwt_filter["JWT Request Filter<br/>[JwtFilter.java]"]
  node_jwt_util["JWT Utilities<br/>[JwtUtil.java]"]
end

subgraph group_persistence["Persistence And Docs"]
  node_task_repo["Task Repository"]
  node_user_repo["User Repository"]
  node_h2_config["H2 Configuration"]
  node_h2_store[("H2 File Database<br/>[fasksdb.mv.db]")]
  node_api_docs["Interactive API Docs<br/>[OpenApiConfig.java]"]
  node_docs_page["Docs Web Page<br/>[docs.html]"]
end

node_client(("API Client"))

node_client -->|"registers or logs in"| node_auth_controller
node_client -->|"manages own tasks"| node_task_controller
node_client -->|"manages account"| node_user_controller
node_auth_controller -->|"delegates to"| node_auth_service
node_task_controller -->|"delegates to"| node_task_service
node_user_controller -->|"delegates to"| node_user_service
node_auth_controller -->|"uses payloads"| node_dto
node_task_controller -->|"uses payloads"| node_dto
node_user_controller -->|"uses payloads"| node_dto
node_auth_service -->|"checks and saves"| node_user_repo
node_auth_service -->|"generates token"| node_jwt_util
node_task_service -->|"queries and saves"| node_task_repo
node_user_service -->|"updates and deletes"| node_user_repo
node_task_service -->|"validates filters"| node_task_values
node_task_repo -->|"persists entity"| node_task_model
node_user_repo -->|"persists entity"| node_user_model
node_security_config -->|"registers filter"| node_jwt_filter
node_jwt_filter -->|"validates token"| node_jwt_util
node_jwt_filter -->|"loads identity"| node_user_repo
node_app -.->|"loads settings"| node_h2_config
node_h2_config -->|"configures file store"| node_h2_store
node_api_docs -.->|"documents API"| node_client
node_docs_page -.->|"presents docs"| node_api_docs

click node_app "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/FasksApplication.java"
click node_auth_controller "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java"
click node_task_controller "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java"
click node_user_controller "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java"
click node_auth_service "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/AuthService.java"
click node_task_service "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/TaskService.java"
click node_user_service "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/UserService.java"
click node_dto "https://github.com/ferdinaldopelembe/tasks-api/tree/main/src/main/java/org/ferdinaldopelembe/fasks/dtos"
click node_task_model "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/models/Task.java"
click node_user_model "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/models/User.java"
click node_task_repo "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/repositories/TaskRepository.java"
click node_user_repo "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java"
click node_task_values "https://github.com/ferdinaldopelembe/tasks-api/tree/main/src/main/java/org/ferdinaldopelembe/fasks/enums"
click node_security_config "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtFilter.java"
click node_jwt_util "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtUtil.java"
click node_h2_config "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/resources/application.properties"
click node_h2_store "https://github.com/ferdinaldopelembe/tasks-api/blob/main/data/fasksdb.mv.db"
click node_api_docs "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/docs/OpenApiConfig.java"
click node_docs_page "https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/resources/static/docs.html"

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_auth_controller,node_task_controller,node_user_controller,node_dto,node_client toneBlue
class node_auth_service,node_task_service,node_user_service,node_task_model,node_user_model,node_task_values toneAmber
class node_security_config,node_jwt_filter,node_jwt_util toneMint
class node_task_repo,node_user_repo,node_h2_config,node_h2_store,node_api_docs,node_docs_page toneRose
```

## Components

### HTTP API

- [Spring Boot Entry](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/FasksApplication.java): `src/main/java/org/ferdinaldopelembe/fasks/FasksApplication.java`
- [Auth Endpoints](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java): `src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java`
- [Task Endpoints](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java): `src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java`
- [User Endpoints](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java): `src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java`
- [Request And Response DTOs](https://github.com/ferdinaldopelembe/tasks-api/tree/main/src/main/java/org/ferdinaldopelembe/fasks/dtos): `src/main/java/org/ferdinaldopelembe/fasks/dtos`

### Account And Tasks

- [Account Auth](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/AuthService.java): `src/main/java/org/ferdinaldopelembe/fasks/services/AuthService.java`
- [Task Operations](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/TaskService.java): `src/main/java/org/ferdinaldopelembe/fasks/services/TaskService.java`
- [Profile Operations](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/services/UserService.java): `src/main/java/org/ferdinaldopelembe/fasks/services/UserService.java`
- [Task Entity](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/models/Task.java): `src/main/java/org/ferdinaldopelembe/fasks/models/Task.java`
- [User Entity](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/models/User.java): `src/main/java/org/ferdinaldopelembe/fasks/models/User.java`
- [Priority And Status](https://github.com/ferdinaldopelembe/tasks-api/tree/main/src/main/java/org/ferdinaldopelembe/fasks/enums): `src/main/java/org/ferdinaldopelembe/fasks/enums`

### Authentication

- [Security Rules](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/config/SecurityConfig.java): `src/main/java/org/ferdinaldopelembe/fasks/security/config/SecurityConfig.java`
- [JWT Request Filter](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtFilter.java): `src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtFilter.java`
- [JWT Utilities](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtUtil.java): `src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtUtil.java`

### Persistence And Docs

- [Task Repository](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/repositories/TaskRepository.java): `src/main/java/org/ferdinaldopelembe/fasks/repositories/TaskRepository.java`
- [User Repository](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java): `src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java`
- [H2 Configuration](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/resources/application.properties): `src/main/resources/application.properties`
- [H2 File Database](https://github.com/ferdinaldopelembe/tasks-api/blob/main/data/fasksdb.mv.db): `data/fasksdb.mv.db`
- [Interactive API Docs](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/java/org/ferdinaldopelembe/fasks/docs/OpenApiConfig.java): `src/main/java/org/ferdinaldopelembe/fasks/docs/OpenApiConfig.java`
- [Docs Web Page](https://github.com/ferdinaldopelembe/tasks-api/blob/main/src/main/resources/static/docs.html): `src/main/resources/static/docs.html`

### Other components

- **API Client**

## Connections

- API Client → Auth Endpoints: registers or logs in (evidence: `README.md`)
- API Client → Task Endpoints: manages own tasks (evidence: `README.md`)
- API Client → User Endpoints: manages account (evidence: `README.md`)
- Auth Endpoints → Account Auth: delegates to (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java`)
- Task Endpoints → Task Operations: delegates to (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java`)
- User Endpoints → Profile Operations: delegates to (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java`)
- Auth Endpoints → Request And Response DTOs: uses payloads (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/AuthController.java`)
- Task Endpoints → Request And Response DTOs: uses payloads (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/TaskController.java`)
- User Endpoints → Request And Response DTOs: uses payloads (evidence: `src/main/java/org/ferdinaldopelembe/fasks/controllers/UserController.java`)
- Account Auth → User Repository: checks and saves (evidence: `src/main/java/org/ferdinaldopelembe/fasks/services/AuthService.java`)
- Account Auth → JWT Utilities: generates token (evidence: `src/main/java/org/ferdinaldopelembe/fasks/services/AuthService.java`)
- Task Operations → Task Repository: queries and saves (evidence: `src/main/java/org/ferdinaldopelembe/fasks/services/TaskService.java`)
- Profile Operations → User Repository: updates and deletes (evidence: `src/main/java/org/ferdinaldopelembe/fasks/services/UserService.java`)
- Task Operations → Priority And Status: validates filters (evidence: `src/main/java/org/ferdinaldopelembe/fasks/services/TaskService.java`)
- Task Repository → Task Entity: persists entity (evidence: `src/main/java/org/ferdinaldopelembe/fasks/repositories/TaskRepository.java`)
- User Repository → User Entity: persists entity (evidence: `src/main/java/org/ferdinaldopelembe/fasks/repositories/UserRepository.java`)
- Security Rules → JWT Request Filter: registers filter (evidence: `src/main/java/org/ferdinaldopelembe/fasks/security/config/SecurityConfig.java`)
- JWT Request Filter → JWT Utilities: validates token (evidence: `src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtFilter.java`)
- JWT Request Filter → User Repository: loads identity (evidence: `src/main/java/org/ferdinaldopelembe/fasks/security/jwt/JwtFilter.java`)
- Spring Boot Entry → H2 Configuration: loads settings
- H2 Configuration → H2 File Database: configures file store (evidence: `README.md`)
- Interactive API Docs → API Client: documents API (evidence: `README.md`)
- Docs Web Page → Interactive API Docs: presents docs
