# iqbal7379/product-management-api architecture

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

- Interactive diagram: https://gitdiagram.com/iqbal7379/product-management-api
- Repository: https://github.com/iqbal7379/product-management-api

## Overview

This is a Spring-based product-management API: clients can authenticate and refresh tokens, then create, browse, update, and delete products and their associated items. Requests enter through REST controllers and are handled by services, which use Spring Data repositories for persistence. Authentication also issues JWT access tokens and stores, verifies, and rotates refresh tokens. The README is empty, and only selected source files were provided; security-filter wiring and other unsampled behavior are therefore not mapped.

Main entry points: [`product-management-api/src/main/java/com/zest/productmanagementapi/service/AuthService.java`](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/AuthService.java) (Auth Service), [`product-management-api/src/main/java/com/zest/productmanagementapi/service/ItemService.java`](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/ItemService.java) (Item Service), [`product-management-api/src/main/java/com/zest/productmanagementapi/repository/ProductRepository.java`](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/ProductRepository.java) (Product Repository), [`product-management-api/src/main/java/com/zest/productmanagementapi/controller/AuthController.java`](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/AuthController.java) (Auth Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API Endpoints"]
  node_auth_controller["Auth Controller"]
  node_product_controller["Product Controller"]
  node_item_controller["Item Controller"]
end

subgraph group_domain["Catalog Services"]
  node_product_service["Product Service"]
  node_item_service["Item Service<br/>[ItemService.java]"]
end

subgraph group_identity["Authentication"]
  node_auth_service["Auth Service<br/>[AuthService.java]"]
  node_jwt_service["JWT Service<br/>[JwtService.java]"]
  node_refresh_service["Refresh Service"]
end

subgraph group_persistence["Persistence"]
  node_user_repo["User Repository"]
  node_refresh_repo["Refresh Repository"]
  node_product_repo["Product Repository"]
  node_item_repo["Item Repository"]
  node_database[("Relational Database")]
end

node_client(("API Client"))

node_client -->|"login or refresh"| node_auth_controller
node_client -->|"manage products"| node_product_controller
node_client -->|"manage items"| node_item_controller
node_auth_controller -->|"delegates"| node_auth_service
node_product_controller -->|"delegates"| node_product_service
node_item_controller -->|"delegates"| node_item_service
node_auth_service -->|"finds user"| node_user_repo
node_auth_service -->|"generates token"| node_jwt_service
node_auth_service -->|"manages refresh"| node_refresh_service
node_refresh_service -->|"reads and writes"| node_refresh_repo
node_product_service -->|"reads and writes"| node_product_repo
node_item_service -->|"reads and writes"| node_item_repo
node_item_service -->|"looks up product"| node_product_repo
node_user_repo -->|"persists users"| node_database
node_refresh_repo -->|"persists tokens"| node_database
node_product_repo -->|"persists products"| node_database
node_item_repo -->|"persists items"| node_database

click node_auth_controller "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/AuthController.java"
click node_product_controller "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/ProductController.java"
click node_item_controller "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/ItemController.java"
click node_auth_service "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/AuthService.java"
click node_jwt_service "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/security/JwtService.java"
click node_refresh_service "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/RefreshTokenService.java"
click node_product_service "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/ProductService.java"
click node_item_service "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/ItemService.java"
click node_user_repo "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/UserRepository.java"
click node_refresh_repo "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/RefreshTokenRepository.java"
click node_product_repo "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/ProductRepository.java"
click node_item_repo "https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/ItemRepository.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_auth_controller,node_product_controller,node_item_controller,node_client toneBlue
class node_product_service,node_item_service toneAmber
class node_auth_service,node_jwt_service,node_refresh_service toneMint
class node_user_repo,node_refresh_repo,node_product_repo,node_item_repo,node_database toneRose
```

## Components

### API Endpoints

- [Auth Controller](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/AuthController.java): `product-management-api/src/main/java/com/zest/productmanagementapi/controller/AuthController.java`
- [Product Controller](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/ProductController.java): `product-management-api/src/main/java/com/zest/productmanagementapi/controller/ProductController.java`
- [Item Controller](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/controller/ItemController.java): `product-management-api/src/main/java/com/zest/productmanagementapi/controller/ItemController.java`

### Catalog Services

- [Product Service](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/ProductService.java): `product-management-api/src/main/java/com/zest/productmanagementapi/service/ProductService.java`
- [Item Service](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/ItemService.java): `product-management-api/src/main/java/com/zest/productmanagementapi/service/ItemService.java`

### Authentication

- [Auth Service](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/AuthService.java): `product-management-api/src/main/java/com/zest/productmanagementapi/service/AuthService.java`
- [JWT Service](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/security/JwtService.java): `product-management-api/src/main/java/com/zest/productmanagementapi/security/JwtService.java`
- [Refresh Service](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/service/RefreshTokenService.java): `product-management-api/src/main/java/com/zest/productmanagementapi/service/RefreshTokenService.java`

### Persistence

- [User Repository](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/UserRepository.java): `product-management-api/src/main/java/com/zest/productmanagementapi/repository/UserRepository.java`
- [Refresh Repository](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/RefreshTokenRepository.java): `product-management-api/src/main/java/com/zest/productmanagementapi/repository/RefreshTokenRepository.java`
- [Product Repository](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/ProductRepository.java): `product-management-api/src/main/java/com/zest/productmanagementapi/repository/ProductRepository.java`
- [Item Repository](https://github.com/iqbal7379/product-management-api/blob/main/product-management-api/src/main/java/com/zest/productmanagementapi/repository/ItemRepository.java): `product-management-api/src/main/java/com/zest/productmanagementapi/repository/ItemRepository.java`
- **Relational Database**

### Other components

- **API Client**

## Connections

- API Client → Auth Controller: login or refresh
- API Client → Product Controller: manage products
- API Client → Item Controller: manage items
- Auth Controller → Auth Service: delegates
- Product Controller → Product Service: delegates
- Item Controller → Item Service: delegates
- Auth Service → User Repository: finds user
- Auth Service → JWT Service: generates token
- Auth Service → Refresh Service: manages refresh
- Refresh Service → Refresh Repository: reads and writes
- Product Service → Product Repository: reads and writes
- Item Service → Item Repository: reads and writes
- Item Service → Product Repository: looks up product
- User Repository → Relational Database: persists users
- Refresh Repository → Relational Database: persists tokens
- Product Repository → Relational Database: persists products
- Item Repository → Relational Database: persists items
