# emilxaviervt/supavisor architecture

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

- Interactive diagram: https://gitdiagram.com/emilxaviervt/supavisor
- Repository: https://github.com/emilxaviervt/supavisor

## Overview

This Java/Javalin backend serves a tenant-aware business API for users and roles, assignments, projects and their status history, tenants, and customers/products synchronized with e-conomic. The main workflow is an authenticated request through routing and a controller into a domain service, then persistence or an external accounting API, returning a DTO response. Sampled code confirms project and product service behavior, user management, and selected route wiring; other capabilities are represented from the source tree, but their internal call links are omitted where excerpts do not establish them.

Main entry points: [`src/main/java/app/services/entityServices/ProjectService.java`](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/ProjectService.java) (Project and history), [`src/main/java/app/services/entityServices/AssignmentService.java`](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/AssignmentService.java) (Assignment management), [`src/main/java/app/dao/UserDAO.java`](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/UserDAO.java) (User data access), [`src/main/java/app/services/entityServices/EconomicProductService.java`](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/EconomicProductService.java) (Product sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and Routing"]
  node_main["Application entry<br/>[Main.java]"]
  node_routepackage["Route package<br/>[RoutePackage.java]"]
  node_user_routes["User routes<br/>[UserRoutes.java]"]
  node_assignment_routes["Assignment routes"]
  node_user_controller["User controller"]
  node_project_controller["Project controller"]
  node_assignment_controller["Assignment controller"]
  node_economic_product_controller["Product controller"]
  node_economic_customer_controller["Customer controller"]
end

subgraph group_domain["Domain Services"]
  node_user_service["User management<br/>[UserService.java]"]
  node_project_service["Project and history"]
  node_assignment_service["Assignment management"]
  node_product_service["Product sync"]
  node_customer_service["Customer sync"]
end

subgraph group_persistence["Persistence"]
  node_user_dao["User data access<br/>[UserDAO.java]"]
  node_project_dao["Project data access<br/>[ProjectDAO.java]"]
  node_assignment_dao["Assignment data access<br/>[AssignmentDAO.java]"]
  node_product_dao["Product data access<br/>[ProductDAO.java]"]
  node_customer_dao["Customer data access<br/>[CustomerDAO.java]"]
  node_db_config["Hibernate configuration"]
  node_database[("Relational database")]
end

subgraph group_integration["Security and Integration"]
  node_security_controller["Authentication"]
  node_token_security["Token security<br/>[TokenSecurity.java]"]
  node_economic_product_client["e-conomic products"]
  node_economic_customer_client["e-conomic customers"]
end

node_actor(("API client"))
node_economic_service["e-conomic API"]

node_actor -->|"sends requests"| node_main
node_main -->|"loads routes"| node_routepackage
node_user_routes -->|"dispatches"| node_user_controller
node_assignment_routes -->|"dispatches"| node_assignment_controller
node_project_controller -->|"calls"| node_project_service
node_user_controller -->|"calls"| node_user_service
node_assignment_controller -->|"calls"| node_assignment_service
node_economic_product_controller -->|"calls"| node_product_service
node_economic_customer_controller -->|"calls"| node_customer_service
node_security_controller -->|"authenticates users"| node_user_dao
node_security_controller -->|"validates tokens"| node_token_security
node_user_service -->|"reads and writes"| node_user_dao
node_project_service -->|"reads and writes"| node_project_dao
node_project_service -->|"checks assignments"| node_assignment_dao
node_project_service -->|"checks customers"| node_customer_dao
node_assignment_service -->|"reads and writes"| node_assignment_dao
node_assignment_service -->|"checks users"| node_user_dao
node_assignment_service -->|"checks products"| node_product_dao
node_product_service -->|"reads and writes"| node_product_dao
node_product_service -->|"requests product data"| node_economic_product_client
node_economic_product_client -->|"calls API"| node_economic_service
node_customer_service -->|"reads and writes"| node_customer_dao
node_customer_service -->|"requests customer data"| node_economic_customer_client
node_economic_customer_client -->|"calls API"| node_economic_service
node_db_config -->|"configures access"| node_database
node_user_dao -->|"reads and writes"| node_database
node_project_dao -->|"reads and writes"| node_database
node_assignment_dao -->|"reads and writes"| node_database
node_product_dao -->|"reads and writes"| node_database
node_customer_dao -->|"reads and writes"| node_database

click node_main "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/Main.java"
click node_routepackage "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/RoutePackage.java"
click node_user_routes "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/subRoutes/UserRoutes.java"
click node_assignment_routes "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/subRoutes/AssignmentRoutes.java"
click node_user_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/UserController.java"
click node_project_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/ProjectController.java"
click node_assignment_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/AssignmentController.java"
click node_economic_product_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/EconomicProductController.java"
click node_economic_customer_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/EconomicCustomerController.java"
click node_user_service "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/UserService.java"
click node_project_service "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/ProjectService.java"
click node_assignment_service "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/AssignmentService.java"
click node_product_service "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/EconomicProductService.java"
click node_customer_service "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/EconomicCustomerService.java"
click node_user_dao "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/UserDAO.java"
click node_project_dao "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/ProjectDAO.java"
click node_assignment_dao "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/AssignmentDAO.java"
click node_product_dao "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/ProductDAO.java"
click node_customer_dao "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/CustomerDAO.java"
click node_db_config "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/config/HibernateConfig.java"
click node_security_controller "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/SecurityController.java"
click node_token_security "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/TokenSecurity.java"
click node_economic_product_client "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/economic/EconomicProductClient.java"
click node_economic_customer_client "https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/economic/EconomicCustomerClient.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_main,node_routepackage,node_user_routes,node_assignment_routes,node_user_controller,node_project_controller,node_assignment_controller,node_economic_product_controller,node_economic_customer_controller,node_actor toneBlue
class node_user_service,node_project_service,node_assignment_service,node_product_service,node_customer_service toneAmber
class node_user_dao,node_project_dao,node_assignment_dao,node_product_dao,node_customer_dao,node_db_config,node_database,node_economic_service toneMint
class node_security_controller,node_token_security,node_economic_product_client,node_economic_customer_client toneRose
```

## Components

### API and Routing

- [Application entry](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/Main.java): `src/main/java/app/Main.java`
- [Route package](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/RoutePackage.java): `src/main/java/app/services/routeSecurity/RoutePackage.java`
- [User routes](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/subRoutes/UserRoutes.java): `src/main/java/app/services/routeSecurity/subRoutes/UserRoutes.java`
- [Assignment routes](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/subRoutes/AssignmentRoutes.java): `src/main/java/app/services/routeSecurity/subRoutes/AssignmentRoutes.java`
- [User controller](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/UserController.java): `src/main/java/app/controller/UserController.java`
- [Project controller](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/ProjectController.java): `src/main/java/app/controller/ProjectController.java`
- [Assignment controller](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/AssignmentController.java): `src/main/java/app/controller/AssignmentController.java`
- [Product controller](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/EconomicProductController.java): `src/main/java/app/controller/EconomicProductController.java`
- [Customer controller](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/EconomicCustomerController.java): `src/main/java/app/controller/EconomicCustomerController.java`

### Domain Services

- [User management](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/UserService.java): `src/main/java/app/services/entityServices/UserService.java`
- [Project and history](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/ProjectService.java): `src/main/java/app/services/entityServices/ProjectService.java`
- [Assignment management](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/AssignmentService.java): `src/main/java/app/services/entityServices/AssignmentService.java`
- [Product sync](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/EconomicProductService.java): `src/main/java/app/services/entityServices/EconomicProductService.java`
- [Customer sync](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/entityServices/EconomicCustomerService.java): `src/main/java/app/services/entityServices/EconomicCustomerService.java`

### Persistence

- [User data access](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/UserDAO.java): `src/main/java/app/dao/UserDAO.java`
- [Project data access](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/ProjectDAO.java): `src/main/java/app/dao/ProjectDAO.java`
- [Assignment data access](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/AssignmentDAO.java): `src/main/java/app/dao/AssignmentDAO.java`
- [Product data access](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/ProductDAO.java): `src/main/java/app/dao/ProductDAO.java`
- [Customer data access](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/dao/CustomerDAO.java): `src/main/java/app/dao/CustomerDAO.java`
- [Hibernate configuration](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/config/HibernateConfig.java): `src/main/java/app/config/HibernateConfig.java`
- **Relational database**

### Security and Integration

- [Authentication](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/controller/SecurityController.java): `src/main/java/app/controller/SecurityController.java`
- [Token security](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/routeSecurity/TokenSecurity.java): `src/main/java/app/services/routeSecurity/TokenSecurity.java`
- [e-conomic products](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/economic/EconomicProductClient.java): `src/main/java/app/services/economic/EconomicProductClient.java`
- [e-conomic customers](https://github.com/emilxaviervt/supavisor/blob/main/src/main/java/app/services/economic/EconomicCustomerClient.java): `src/main/java/app/services/economic/EconomicCustomerClient.java`

### Other components

- **API client**
- **e-conomic API**

## Connections

- API client → Application entry: sends requests
- Application entry → Route package: loads routes
- User routes → User controller: dispatches
- Assignment routes → Assignment controller: dispatches
- Project controller → Project and history: calls
- User controller → User management: calls
- Assignment controller → Assignment management: calls
- Product controller → Product sync: calls
- Customer controller → Customer sync: calls
- Authentication → User data access: authenticates users
- Authentication → Token security: validates tokens
- User management → User data access: reads and writes
- Project and history → Project data access: reads and writes
- Project and history → Assignment data access: checks assignments
- Project and history → Customer data access: checks customers
- Assignment management → Assignment data access: reads and writes
- Assignment management → User data access: checks users
- Assignment management → Product data access: checks products
- Product sync → Product data access: reads and writes
- Product sync → e-conomic products: requests product data
- e-conomic products → e-conomic API: calls API
- Customer sync → Customer data access: reads and writes
- Customer sync → e-conomic customers: requests customer data
- e-conomic customers → e-conomic API: calls API
- Hibernate configuration → Relational database: configures access
- User data access → Relational database: reads and writes
- Project data access → Relational database: reads and writes
- Assignment data access → Relational database: reads and writes
- Product data access → Relational database: reads and writes
- Customer data access → Relational database: reads and writes
