# leoo-deb/simplified-inventory-management-api architecture

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

- Interactive diagram: https://gitdiagram.com/leoo-deb/simplified-inventory-management-api
- Repository: https://github.com/leoo-deb/simplified-inventory-management-api

## Overview

This is a Spring REST inventory-management API. Users submit category, product, variant, and stock-movement requests; controllers delegate to services that apply domain rules, map DTOs, and access persistence. Variant image operations additionally use S3. The README documents advanced product and movement filters, pagination, standardized responses, and global error handling. The graph reflects sampled service/controller code and documented capabilities; unsampled controller and repository wiring is not expanded beyond those documented layer relationships.

Main entry points: [`src/main/java/com/leo/estoque_api/service/ProductVariantService.java`](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductVariantService.java) (Variant Rules), [`src/main/java/com/leo/estoque_api/service/ProductService.java`](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductService.java) (Product Rules), [`src/main/java/com/leo/estoque_api/service/MovementService.java`](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/MovementService.java) (Movement Rules), [`src/main/java/com/leo/estoque_api/service/CategoryService.java`](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/CategoryService.java) (Category Rules)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API Layer"]
  node_category_controller["Category API"]
  node_product_controller["Product API"]
  node_variant_controller["Variant API"]
  node_movement_controller["Movement API"]
end

subgraph group_catalog["Catalog Management"]
  node_category_service["Category Rules"]
  node_product_service["Product Rules"]
  node_variant_service["Variant Rules"]
  node_category_mapper["Category Mapper"]
  node_product_mapper["Product Mapper<br/>[ProductMapper.java]"]
  node_variant_mapper["Variant Mapper"]
end

subgraph group_stock["Stock Tracking"]
  node_movement_service["Movement Rules"]
  node_movement_mapper["Movement Mapper"]
end

subgraph group_integrations["Persistence and Integrations"]
  node_category_repo["Category Repository"]
  node_product_repo["Product Repository"]
  node_variant_repo["Variant Repository"]
  node_movement_repo["Movement Repository"]
  node_database[("Inventory Database")]
  node_storage_service["S3 Storage Service"]
  node_s3[("Amazon S3")]
end

node_user(("API User"))

node_user -->|"sends category requests"| node_category_controller
node_user -->|"sends product requests"| node_product_controller
node_user -->|"sends variant requests"| node_variant_controller
node_user -->|"sends movement requests"| node_movement_controller
node_category_controller -->|"delegates operations"| node_category_service
node_product_controller -->|"delegates operations"| node_product_service
node_variant_controller -->|"delegates operations"| node_variant_service
node_movement_controller -->|"delegates operations"| node_movement_service
node_category_service -->|"maps entities"| node_category_mapper
node_product_service -->|"maps entities"| node_product_mapper
node_variant_service -->|"maps entities"| node_variant_mapper
node_movement_service -->|"maps movements"| node_movement_mapper
node_category_service -->|"reads and writes"| node_category_repo
node_product_service -->|"reads and writes"| node_product_repo
node_product_service -->|"loads category"| node_category_repo
node_variant_service -->|"loads parent product"| node_product_repo
node_variant_service -->|"reads and writes"| node_variant_repo
node_movement_service -->|"loads variant"| node_variant_repo
node_movement_service -->|"queries and records"| node_movement_repo
node_category_repo -->|"persists categories"| node_database
node_product_repo -->|"persists products"| node_database
node_variant_repo -->|"persists variants"| node_database
node_movement_repo -->|"persists movements"| node_database
node_variant_service -->|"uploads or removes images"| node_storage_service
node_storage_service -->|"stores image objects"| node_s3

click node_category_controller "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/CategoryController.java"
click node_product_controller "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/ProductController.java"
click node_variant_controller "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/ProductVariantController.java"
click node_movement_controller "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/MovementController.java"
click node_category_service "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/CategoryService.java"
click node_product_service "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductService.java"
click node_variant_service "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductVariantService.java"
click node_category_mapper "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/category/CategoryMapper.java"
click node_product_mapper "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/product/ProductMapper.java"
click node_variant_mapper "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/productvariant/ProductVariantMapper.java"
click node_movement_service "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/MovementService.java"
click node_movement_mapper "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/movement/MovementMapper.java"
click node_category_repo "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/CategoryRepository.java"
click node_product_repo "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/ProductRepository.java"
click node_variant_repo "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/ProductVariantRepository.java"
click node_movement_repo "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/MovementRepository.java"
click node_storage_service "https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/infra/storage/StorageS3Service.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_category_controller,node_product_controller,node_variant_controller,node_movement_controller,node_user toneBlue
class node_category_service,node_product_service,node_variant_service,node_category_mapper,node_product_mapper,node_variant_mapper toneAmber
class node_movement_service,node_movement_mapper toneMint
class node_category_repo,node_product_repo,node_variant_repo,node_movement_repo,node_database,node_storage_service,node_s3 toneRose
```

## Components

### API Layer

- [Category API](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/CategoryController.java): `src/main/java/com/leo/estoque_api/controller/CategoryController.java`
- [Product API](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/ProductController.java): `src/main/java/com/leo/estoque_api/controller/ProductController.java`
- [Variant API](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/ProductVariantController.java): `src/main/java/com/leo/estoque_api/controller/ProductVariantController.java`
- [Movement API](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/controller/MovementController.java): `src/main/java/com/leo/estoque_api/controller/MovementController.java`

### Catalog Management

- [Category Rules](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/CategoryService.java): `src/main/java/com/leo/estoque_api/service/CategoryService.java`
- [Product Rules](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductService.java): `src/main/java/com/leo/estoque_api/service/ProductService.java`
- [Variant Rules](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/ProductVariantService.java): `src/main/java/com/leo/estoque_api/service/ProductVariantService.java`
- [Category Mapper](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/category/CategoryMapper.java): `src/main/java/com/leo/estoque_api/dto/category/CategoryMapper.java`
- [Product Mapper](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/product/ProductMapper.java): `src/main/java/com/leo/estoque_api/dto/product/ProductMapper.java`
- [Variant Mapper](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/productvariant/ProductVariantMapper.java): `src/main/java/com/leo/estoque_api/dto/productvariant/ProductVariantMapper.java`

### Stock Tracking

- [Movement Rules](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/service/MovementService.java): `src/main/java/com/leo/estoque_api/service/MovementService.java`
- [Movement Mapper](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/dto/movement/MovementMapper.java): `src/main/java/com/leo/estoque_api/dto/movement/MovementMapper.java`

### Persistence and Integrations

- [Category Repository](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/CategoryRepository.java): `src/main/java/com/leo/estoque_api/repository/CategoryRepository.java`
- [Product Repository](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/ProductRepository.java): `src/main/java/com/leo/estoque_api/repository/ProductRepository.java`
- [Variant Repository](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/ProductVariantRepository.java): `src/main/java/com/leo/estoque_api/repository/ProductVariantRepository.java`
- [Movement Repository](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/repository/MovementRepository.java): `src/main/java/com/leo/estoque_api/repository/MovementRepository.java`
- **Inventory Database**
- [S3 Storage Service](https://github.com/leoo-deb/simplified-inventory-management-api/blob/main/src/main/java/com/leo/estoque_api/infra/storage/StorageS3Service.java): `src/main/java/com/leo/estoque_api/infra/storage/StorageS3Service.java`
- **Amazon S3**

### Other components

- **API User**

## Connections

- API User → Category API: sends category requests
- API User → Product API: sends product requests
- API User → Variant API: sends variant requests
- API User → Movement API: sends movement requests
- Category API → Category Rules: delegates operations
- Product API → Product Rules: delegates operations
- Variant API → Variant Rules: delegates operations
- Movement API → Movement Rules: delegates operations
- Category Rules → Category Mapper: maps entities
- Product Rules → Product Mapper: maps entities
- Variant Rules → Variant Mapper: maps entities
- Movement Rules → Movement Mapper: maps movements
- Category Rules → Category Repository: reads and writes
- Product Rules → Product Repository: reads and writes
- Product Rules → Category Repository: loads category
- Variant Rules → Product Repository: loads parent product
- Variant Rules → Variant Repository: reads and writes
- Movement Rules → Variant Repository: loads variant
- Movement Rules → Movement Repository: queries and records
- Category Repository → Inventory Database: persists categories
- Product Repository → Inventory Database: persists products
- Variant Repository → Inventory Database: persists variants
- Movement Repository → Inventory Database: persists movements
- Variant Rules → S3 Storage Service: uploads or removes images
- S3 Storage Service → Amazon S3: stores image objects
