# systemivan/17soat-workshop-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/systemivan/17soat-workshop-management-system
- Repository: https://github.com/systemivan/17soat-workshop-management-system

## Overview

The repository is a Spring Boot modular monolith for managing a vehicle-repair workshop. The main workflow registers customers and vehicles, records a service order and diagnosis, generates and decides an estimate, then tracks execution through completion and vehicle delivery; stock requirements, reservations, and procurement support that lifecycle. Each module separates web, application, domain, and persistence responsibilities. The README documents MySQL-backed state, in-process module APIs, and Spring events; the graph reflects those documented boundaries. Several subsystem paths are represented by their existing enclosing directories because their implementation was not sampled.

Main entry points: [`src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder`](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder) (Diagnosis and execution), [`src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/application/usecase`](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/application/usecase) (Estimate decisions), [`src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/infrastructure/web/ServiceOrderController.java`](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/infrastructure/web/ServiceOrderController.java) (Service order API), [`src/main/java/br/com/fiap/workshop_management_system/stockprocurement`](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement) (Demand and procurement)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_api["Authentication API"]
  node_auth_usecases["Account and login"]
  node_jwt["JWT security"]
end

subgraph group_registration["Registration"]
  node_customer_api["Customer API"]
  node_customer_logic["Customer management"]
  node_vehicle_api["Vehicle API"]
  node_vehicle_logic["Vehicle management"]
  node_catalog_api["Service catalog API"]
  node_catalog_logic["Catalog management"]
end

subgraph group_lifecycle["Service lifecycle"]
  node_order_api["Service order API"]
  node_order_logic["Diagnosis and execution"]
  node_estimate_api["Estimate API"]
  node_estimate_logic["Estimate decisions"]
  node_estimate_events["Estimate notification"]
  node_metrics["Execution metrics"]
end

subgraph group_stock["Stock procurement"]
  node_stock_api["Stock item API"]
  node_stock_domain["Stock and reservations"]
  node_purchase_api["Purchase order API"]
  node_procurement["Demand and procurement"]
end

subgraph group_platform["Platform"]
  node_mysql[("MySQL database")]
end

node_user(("Admin or staff"))
node_supplier["Supplier simulator"]

node_user -->|"authenticates"| node_auth_api
node_auth_api -->|"invokes"| node_auth_usecases
node_user -->|"manages customers"| node_customer_api
node_customer_api -->|"invokes"| node_customer_logic
node_user -->|"manages vehicles"| node_vehicle_api
node_vehicle_api -->|"invokes"| node_vehicle_logic
node_user -->|"manages services"| node_catalog_api
node_catalog_api -->|"invokes"| node_catalog_logic
node_user -->|"opens and tracks"| node_order_api
node_order_api -->|"invokes"| node_order_logic
node_user -->|"reviews estimate"| node_estimate_api
node_estimate_api -->|"invokes"| node_estimate_logic
node_order_logic -->|"requests estimate"| node_estimate_logic
node_estimate_logic -.->|"publishes event"| node_estimate_events
node_user -->|"manages stock"| node_stock_api
node_stock_api -->|"invokes"| node_stock_domain
node_order_logic -->|"requests reservations"| node_stock_domain
node_user -->|"manages purchases"| node_purchase_api
node_purchase_api -->|"invokes"| node_procurement
node_procurement -.->|"integrates"| node_supplier
node_order_api -->|"invokes metrics"| node_metrics
node_customer_logic -->|"reads and writes"| node_mysql
node_vehicle_logic -->|"reads and writes"| node_mysql
node_catalog_logic -->|"reads and writes"| node_mysql
node_auth_usecases -->|"reads and writes"| node_mysql
node_order_logic -->|"reads and writes"| node_mysql
node_estimate_logic -->|"reads and writes"| node_mysql
node_stock_domain -->|"reads and writes"| node_mysql
node_procurement -->|"reads and writes"| node_mysql
node_jwt -->|"issues tokens"| node_auth_usecases

click node_auth_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/identity/auth/infrastructure/web/AuthController.java"
click node_auth_usecases "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/identity/auth/application/usecase"
click node_jwt "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/identity"
click node_customer_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/customer/infrastructure/web/CustomerController.java"
click node_customer_logic "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/customer/application/usecase"
click node_vehicle_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/infrastructure/web/VehicleController.java"
click node_vehicle_logic "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/application/usecase"
click node_catalog_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/infrastructure/web/CatalogServiceController.java"
click node_catalog_logic "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/application/usecase"
click node_order_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/infrastructure/web/ServiceOrderController.java"
click node_order_logic "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder"
click node_estimate_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/infrastructure/web/EstimateController.java"
click node_estimate_logic "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/application/usecase"
click node_estimate_events "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/notification/application"
click node_metrics "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/application/usecase/GetAverageServiceExecutionTimeUseCase.java"
click node_stock_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock/infrastructure/web/StockItemController.java"
click node_stock_domain "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock"
click node_purchase_api "https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/purchaseorder/infrastructure/web/PurchaseOrderController.java"
click node_procurement "https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement"

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_auth_api,node_auth_usecases,node_jwt toneBlue
class node_customer_api,node_customer_logic,node_vehicle_api,node_vehicle_logic,node_catalog_api,node_catalog_logic toneAmber
class node_order_api,node_order_logic,node_estimate_api,node_estimate_logic,node_estimate_events,node_metrics toneMint
class node_stock_api,node_stock_domain,node_purchase_api,node_procurement toneRose
class node_mysql,node_user,node_supplier toneIndigo
```

## Components

### Identity

- [Authentication API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/identity/auth/infrastructure/web/AuthController.java): `src/main/java/br/com/fiap/workshop_management_system/identity/auth/infrastructure/web/AuthController.java`
- [Account and login](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/identity/auth/application/usecase): `src/main/java/br/com/fiap/workshop_management_system/identity/auth/application/usecase`
- [JWT security](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/identity): `src/main/java/br/com/fiap/workshop_management_system/identity`

### Registration

- [Customer API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/customer/infrastructure/web/CustomerController.java): `src/main/java/br/com/fiap/workshop_management_system/registration/customer/infrastructure/web/CustomerController.java`
- [Customer management](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/customer/application/usecase): `src/main/java/br/com/fiap/workshop_management_system/registration/customer/application/usecase`
- [Vehicle API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/infrastructure/web/VehicleController.java): `src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/infrastructure/web/VehicleController.java`
- [Vehicle management](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/application/usecase): `src/main/java/br/com/fiap/workshop_management_system/registration/vehicle/application/usecase`
- [Service catalog API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/infrastructure/web/CatalogServiceController.java): `src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/infrastructure/web/CatalogServiceController.java`
- [Catalog management](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/application/usecase): `src/main/java/br/com/fiap/workshop_management_system/registration/servicecatalog/application/usecase`

### Service lifecycle

- [Service order API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/infrastructure/web/ServiceOrderController.java): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/infrastructure/web/ServiceOrderController.java`
- [Diagnosis and execution](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder`
- [Estimate API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/infrastructure/web/EstimateController.java): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/infrastructure/web/EstimateController.java`
- [Estimate decisions](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/application/usecase): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/application/usecase`
- [Estimate notification](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/notification/application): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/estimate/notification/application`
- [Execution metrics](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/application/usecase/GetAverageServiceExecutionTimeUseCase.java): `src/main/java/br/com/fiap/workshop_management_system/servicelifecycle/serviceorder/application/usecase/GetAverageServiceExecutionTimeUseCase.java`

### Stock procurement

- [Stock item API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock/infrastructure/web/StockItemController.java): `src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock/infrastructure/web/StockItemController.java`
- [Stock and reservations](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock): `src/main/java/br/com/fiap/workshop_management_system/stockprocurement/stock`
- [Purchase order API](https://github.com/systemivan/17soat-workshop-management-system/blob/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement/purchaseorder/infrastructure/web/PurchaseOrderController.java): `src/main/java/br/com/fiap/workshop_management_system/stockprocurement/purchaseorder/infrastructure/web/PurchaseOrderController.java`
- [Demand and procurement](https://github.com/systemivan/17soat-workshop-management-system/tree/main/src/main/java/br/com/fiap/workshop_management_system/stockprocurement): `src/main/java/br/com/fiap/workshop_management_system/stockprocurement`

### Platform

- **MySQL database**

### Other components

- **Admin or staff**
- **Supplier simulator**

## Connections

- Admin or staff → Authentication API: authenticates
- Authentication API → Account and login: invokes
- Admin or staff → Customer API: manages customers
- Customer API → Customer management: invokes
- Admin or staff → Vehicle API: manages vehicles
- Vehicle API → Vehicle management: invokes
- Admin or staff → Service catalog API: manages services
- Service catalog API → Catalog management: invokes
- Admin or staff → Service order API: opens and tracks
- Service order API → Diagnosis and execution: invokes
- Admin or staff → Estimate API: reviews estimate
- Estimate API → Estimate decisions: invokes
- Diagnosis and execution → Estimate decisions: requests estimate
- Estimate decisions → Estimate notification: publishes event
- Admin or staff → Stock item API: manages stock
- Stock item API → Stock and reservations: invokes
- Diagnosis and execution → Stock and reservations: requests reservations
- Admin or staff → Purchase order API: manages purchases
- Purchase order API → Demand and procurement: invokes
- Demand and procurement → Supplier simulator: integrates
- Service order API → Execution metrics: invokes metrics
- Customer management → MySQL database: reads and writes
- Vehicle management → MySQL database: reads and writes
- Catalog management → MySQL database: reads and writes
- Account and login → MySQL database: reads and writes
- Diagnosis and execution → MySQL database: reads and writes
- Estimate decisions → MySQL database: reads and writes
- Stock and reservations → MySQL database: reads and writes
- Demand and procurement → MySQL database: reads and writes
- JWT security → Account and login: issues tokens
