# igornassa/taskq-back-end architecture

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

- Interactive diagram: https://gitdiagram.com/igornassa/taskq-back-end
- Repository: https://github.com/igornassa/taskq-back-end

## Overview

TaskQ is a REST backend for users, roles, projects and tasks, with task-completion XP and national-holiday lookup. The main workflow is an API request through a controller into domain services, which validate and persist changes; completing a task also invokes XP rewards. The README documents deadline handling, auditing and standardized errors as additional capabilities. Service-to-repository and controller-to-service links are supported by the source index; holiday integration is documented in the README. Some subsystems were not excerpted, so those links are limited to documented or indexed evidence.

Main entry points: [`src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/TaskService.java) (Task lifecycle), [`src/main/java/uniamerica/tasksq_back_end/service/UserService.java`](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/UserService.java) (User management), [`src/main/java/uniamerica/tasksq_back_end/repository`](https://github.com/igornassa/taskq-back-end/tree/main/src/main/java/uniamerica/tasksq_back_end/repository) (Spring Data repositories), [`src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java`](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java) (Project lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_users_api["Users API"]
  node_roles_api["Roles API"]
  node_projects_api["Projects API"]
  node_tasks_api["Tasks API"]
  node_holidays_api["Holidays API"]
end

subgraph group_domain["Domain services"]
  node_users["User management<br/>[UserService.java]"]
  node_roles["Role management<br/>[RoleService.java]"]
  node_projects["Project lifecycle"]
  node_tasks["Task lifecycle<br/>[TaskService.java]"]
  node_xp["XP rewards<br/>[XpService.java]"]
  node_holidays["Holiday lookup"]
  node_task_mapper["Task DTO mapping<br/>[TaskMapper.java]"]
end

subgraph group_persistence["Domain model and persistence"]
  node_entities["JPA domain entities"]
  node_repositories[("Spring Data repositories")]
end

subgraph group_support["Cross-cutting services"]
  node_holiday_client["Holiday provider client<br/>[HolidayAPI.java]"]
  node_errors["Error responses"]
  node_audit["Entity auditing"]
end

node_client(("API client"))

node_client -->|"calls"| node_users_api
node_client -->|"calls"| node_roles_api
node_client -->|"calls"| node_projects_api
node_client -->|"calls"| node_tasks_api
node_client -->|"calls"| node_holidays_api
node_users_api -->|"delegates to"| node_users
node_roles_api -->|"delegates to"| node_roles
node_projects_api -->|"delegates to"| node_projects
node_tasks_api -->|"delegates to"| node_tasks
node_holidays_api -->|"delegates to"| node_holidays
node_users -->|"reads and writes"| node_repositories
node_roles -->|"reads and writes"| node_repositories
node_projects -->|"reads and writes"| node_repositories
node_tasks -->|"reads and writes"| node_repositories
node_xp -->|"records rewards"| node_repositories
node_tasks -->|"resolves project"| node_projects
node_tasks -->|"resolves assignee"| node_users
node_tasks -->|"awards completion XP"| node_xp
node_users -.->|"maps task DTOs"| node_task_mapper
node_tasks -->|"maps requests"| node_task_mapper
node_holidays -->|"queries"| node_holiday_client
node_entities -->|"inherits timestamps"| node_audit
node_users -.->|"raises API errors"| node_errors

click node_users_api "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/UserController.java"
click node_roles_api "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/RoleController.java"
click node_projects_api "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/ProjectController.java"
click node_tasks_api "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/TaskController.java"
click node_holidays_api "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/HolidayController.java"
click node_users "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/UserService.java"
click node_roles "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/RoleService.java"
click node_projects "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java"
click node_tasks "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/TaskService.java"
click node_xp "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/XpService.java"
click node_holidays "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/HolidayService.java"
click node_holiday_client "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/integration/HolidayAPI.java"
click node_errors "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/exception/GlobalExceptionHandler.java"
click node_audit "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/audit/AuditableEntity.java"
click node_entities "https://github.com/igornassa/taskq-back-end/tree/main/src/main/java/uniamerica/tasksq_back_end/entity"
click node_repositories "https://github.com/igornassa/taskq-back-end/tree/main/src/main/java/uniamerica/tasksq_back_end/repository"
click node_task_mapper "https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/dto/mapper/TaskMapper.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_users_api,node_roles_api,node_projects_api,node_tasks_api,node_holidays_api,node_client toneBlue
class node_users,node_roles,node_projects,node_tasks,node_xp,node_holidays,node_task_mapper toneAmber
class node_entities,node_repositories toneMint
class node_holiday_client,node_errors,node_audit toneRose
```

## Components

### REST API

- [Users API](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/UserController.java): `src/main/java/uniamerica/tasksq_back_end/controller/UserController.java`
- [Roles API](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/RoleController.java): `src/main/java/uniamerica/tasksq_back_end/controller/RoleController.java`
- [Projects API](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/ProjectController.java): `src/main/java/uniamerica/tasksq_back_end/controller/ProjectController.java`
- [Tasks API](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/TaskController.java): `src/main/java/uniamerica/tasksq_back_end/controller/TaskController.java`
- [Holidays API](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/controller/HolidayController.java): `src/main/java/uniamerica/tasksq_back_end/controller/HolidayController.java`

### Domain services

- [User management](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/UserService.java): `src/main/java/uniamerica/tasksq_back_end/service/UserService.java`
- [Role management](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/RoleService.java): `src/main/java/uniamerica/tasksq_back_end/service/RoleService.java`
- [Project lifecycle](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java): `src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java`
- [Task lifecycle](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/TaskService.java): `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`
- [XP rewards](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/XpService.java): `src/main/java/uniamerica/tasksq_back_end/service/XpService.java`
- [Holiday lookup](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/service/HolidayService.java): `src/main/java/uniamerica/tasksq_back_end/service/HolidayService.java`
- [Task DTO mapping](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/dto/mapper/TaskMapper.java): `src/main/java/uniamerica/tasksq_back_end/dto/mapper/TaskMapper.java`

### Domain model and persistence

- [JPA domain entities](https://github.com/igornassa/taskq-back-end/tree/main/src/main/java/uniamerica/tasksq_back_end/entity): `src/main/java/uniamerica/tasksq_back_end/entity`
- [Spring Data repositories](https://github.com/igornassa/taskq-back-end/tree/main/src/main/java/uniamerica/tasksq_back_end/repository): `src/main/java/uniamerica/tasksq_back_end/repository`

### Cross-cutting services

- [Holiday provider client](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/integration/HolidayAPI.java): `src/main/java/uniamerica/tasksq_back_end/integration/HolidayAPI.java`
- [Error responses](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/exception/GlobalExceptionHandler.java): `src/main/java/uniamerica/tasksq_back_end/exception/GlobalExceptionHandler.java`
- [Entity auditing](https://github.com/igornassa/taskq-back-end/blob/main/src/main/java/uniamerica/tasksq_back_end/audit/AuditableEntity.java): `src/main/java/uniamerica/tasksq_back_end/audit/AuditableEntity.java`

### Other components

- **API client**

## Connections

- API client → Users API: calls
- API client → Roles API: calls
- API client → Projects API: calls
- API client → Tasks API: calls
- API client → Holidays API: calls
- Users API → User management: delegates to (evidence: `src/main/java/uniamerica/tasksq_back_end/controller/UserController.java`)
- Roles API → Role management: delegates to (evidence: `src/main/java/uniamerica/tasksq_back_end/controller/RoleController.java`)
- Projects API → Project lifecycle: delegates to (evidence: `src/main/java/uniamerica/tasksq_back_end/controller/ProjectController.java`)
- Tasks API → Task lifecycle: delegates to (evidence: `src/main/java/uniamerica/tasksq_back_end/controller/TaskController.java`)
- Holidays API → Holiday lookup: delegates to (evidence: `src/main/java/uniamerica/tasksq_back_end/controller/HolidayController.java`)
- User management → Spring Data repositories: reads and writes (evidence: `src/main/java/uniamerica/tasksq_back_end/service/UserService.java`)
- Role management → Spring Data repositories: reads and writes (evidence: `src/main/java/uniamerica/tasksq_back_end/service/RoleService.java`)
- Project lifecycle → Spring Data repositories: reads and writes (evidence: `src/main/java/uniamerica/tasksq_back_end/service/ProjectService.java`)
- Task lifecycle → Spring Data repositories: reads and writes (evidence: `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`)
- XP rewards → Spring Data repositories: records rewards (evidence: `src/main/java/uniamerica/tasksq_back_end/service/XpService.java`)
- Task lifecycle → Project lifecycle: resolves project (evidence: `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`)
- Task lifecycle → User management: resolves assignee (evidence: `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`)
- Task lifecycle → XP rewards: awards completion XP (evidence: `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`)
- User management → Task DTO mapping: maps task DTOs
- Task lifecycle → Task DTO mapping: maps requests (evidence: `src/main/java/uniamerica/tasksq_back_end/service/TaskService.java`)
- Holiday lookup → Holiday provider client: queries (evidence: `src/main/java/uniamerica/tasksq_back_end/service/HolidayService.java`)
- JPA domain entities → Entity auditing: inherits timestamps (evidence: `src/main/java/uniamerica/tasksq_back_end/entity/Task.java`)
- User management → Error responses: raises API errors
