# gabriel-perin99/spring-stock-controller architecture

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

- Interactive diagram: https://gitdiagram.com/gabriel-perin99/spring-stock-controller
- Repository: https://github.com/gabriel-perin99/spring-stock-controller

## Overview

This is a Spring-based stock-control application with an optional JavaFX desktop client. Users add, update, delete, browse, and search products; the GUI calls a local JSON API, whose controller delegates product operations through a service to JPA persistence. The README documents SQLite storage and live name/code filtering in the GUI. The GUI and API excerpts support their main interactions, but database configuration and some interface code were not sampled, so finer wiring is omitted.

Main entry points: [`src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ClientInterface.java`](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ClientInterface.java) (JavaFX interface), [`src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductApiClient.java`](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductApiClient.java) (HTTP client), [`src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/controller/ProductController.java`](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/controller/ProductController.java) (Product endpoints), [`src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/repository/ProductRepository.java`](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/repository/ProductRepository.java) (JPA repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop client"]
  node_clientui["JavaFX interface"]
  node_apiclient["HTTP client"]
  node_dto["Product DTO<br/>[ProductDTO.java]"]
end

subgraph group_api["HTTP API"]
  node_controller["Product endpoints"]
end

subgraph group_domain["Product persistence"]
  node_service["Product operations"]
  node_repository["JPA repository"]
  node_product["Product entity<br/>[Product.java]"]
  node_sqlite[("SQLite database")]
end

subgraph group_runtime["Application runtime"]
  node_main["Desktop launcher<br/>[Main.java]"]
  node_springapp["Spring bootstrap"]
end

node_user(("Stock user"))

node_user -->|"uses"| node_clientui
node_main -->|"starts"| node_springapp
node_main -->|"launches"| node_clientui
node_clientui -->|"requests"| node_apiclient
node_clientui -->|"creates"| node_dto
node_apiclient -->|"serializes"| node_dto
node_apiclient -->|"HTTP JSON"| node_controller
node_controller -->|"returns JSON"| node_apiclient
node_controller -->|"delegates"| node_service
node_service -->|"queries and writes"| node_repository
node_repository -->|"maps entity"| node_product
node_repository -->|"persists"| node_sqlite
node_clientui -->|"refreshes table"| node_apiclient

click node_main "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/Main.java"
click node_springapp "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/SpringStockControllerApplication.java"
click node_clientui "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ClientInterface.java"
click node_apiclient "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductApiClient.java"
click node_dto "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductDTO.java"
click node_controller "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/controller/ProductController.java"
click node_service "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/service/ProductService.java"
click node_repository "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/repository/ProductRepository.java"
click node_product "https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/model/Product.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_clientui,node_apiclient,node_dto,node_user toneBlue
class node_controller toneAmber
class node_service,node_repository,node_product,node_sqlite toneMint
class node_main,node_springapp toneRose
```

## Components

### Desktop client

- [JavaFX interface](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ClientInterface.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ClientInterface.java`
- [HTTP client](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductApiClient.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductApiClient.java`
- [Product DTO](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductDTO.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/view/ProductDTO.java`

### HTTP API

- [Product endpoints](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/controller/ProductController.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/controller/ProductController.java`

### Product persistence

- [Product operations](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/service/ProductService.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/service/ProductService.java`
- [JPA repository](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/repository/ProductRepository.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/repository/ProductRepository.java`
- [Product entity](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/model/Product.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/model/Product.java`
- **SQLite database**

### Application runtime

- [Desktop launcher](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/Main.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/Main.java`
- [Spring bootstrap](https://github.com/gabriel-perin99/spring-stock-controller/blob/master/src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/SpringStockControllerApplication.java): `src/main/java/com/gitHub/GabrielPerin/Spring_Stock_Controller/SpringStockControllerApplication.java`

### Other components

- **Stock user**

## Connections

- Stock user → JavaFX interface: uses
- Desktop launcher → Spring bootstrap: starts
- Desktop launcher → JavaFX interface: launches
- JavaFX interface → HTTP client: requests
- JavaFX interface → Product DTO: creates
- HTTP client → Product DTO: serializes
- HTTP client → Product endpoints: HTTP JSON
- Product endpoints → HTTP client: returns JSON
- Product endpoints → Product operations: delegates
- Product operations → JPA repository: queries and writes
- JPA repository → Product entity: maps entity
- JPA repository → SQLite database: persists
- JavaFX interface → HTTP client: refreshes table
