# ejazulhaque13/productservicettsevening architecture

> Architecture diagram of the GitHub repository ejazulhaque13/productservicettsevening, 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/ejazulhaque13/productservicettsevening
- Repository: https://github.com/ejazulhaque13/productservicettsevening

## Overview

This is a Spring Boot product-service API intended to expose product and category endpoints backed by FakeStore. Product list, detail, and create requests call the product service, which fetches FakeStore data and maps it into domain models. Category endpoints currently return placeholder strings, and product update/delete are also placeholders; the category service is unimplemented. The README describes FakeStore API compatibility as the assignment goal. Category-service wiring beyond the sampled files is not assumed.

Main entry points: [`src/main/java/dev/naman/productservicettsevening/services/FakeStoreProductServiceImpl.java`](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/FakeStoreProductServiceImpl.java) (FakeStore Product Service), [`src/main/java/dev/naman/productservicettsevening/controllers/ProductController.java`](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/ProductController.java) (Product Controller), [`src/main/java/dev/naman/productservicettsevening/controllers/CategoryController.java`](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/CategoryController.java) (Category Controller), [`src/main/java/dev/naman/productservicettsevening/services/ProductService.java`](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/ProductService.java) (Product Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_product_controller["Product Controller"]
  node_category_controller["Category Controller"]
end

subgraph group_services["Service Layer"]
  node_product_service["Product Service"]
  node_fake_product_service["FakeStore Product Service"]
  node_category_service["Category Service"]
  node_fake_category_service["FakeStore Category Service"]
end

subgraph group_domain["Data Models"]
  node_product_dto["Product DTO<br/>[ProductDto.java]"]
  node_product["Product Model<br/>[Product.java]"]
  node_category["Category Model<br/>[Category.java]"]
  node_base_model["Base Model<br/>[BaseModel.java]"]
end

node_client(("API Client"))
node_fakestore["FakeStore API"]

node_client -->|"requests"| node_product_controller
node_client -->|"requests"| node_category_controller
node_product_controller -->|"calls"| node_product_service
node_product_service -->|"implemented by"| node_fake_product_service
node_fake_product_service -->|"fetches products"| node_fakestore
node_fakestore -->|"returns DTOs"| node_fake_product_service
node_fake_product_service -->|"maps response"| node_product_dto
node_fake_product_service -->|"builds models"| node_product
node_fake_product_service -->|"sets category"| node_category
node_product -->|"extends"| node_base_model
node_category_controller -.->|"declared dependency"| node_category_service
node_category_service -->|"implemented by"| node_fake_category_service

click node_product_controller "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/ProductController.java"
click node_category_controller "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/CategoryController.java"
click node_product_service "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/ProductService.java"
click node_fake_product_service "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/FakeStoreProductServiceImpl.java"
click node_category_service "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/CategoryService.java"
click node_fake_category_service "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/FakeStoreCategoryServiceImpl.java"
click node_product_dto "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/dtos/ProductDto.java"
click node_product "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/Product.java"
click node_category "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/Category.java"
click node_base_model "https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/BaseModel.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_product_controller,node_category_controller,node_client toneBlue
class node_product_service,node_fake_product_service,node_category_service,node_fake_category_service toneAmber
class node_product_dto,node_product,node_category,node_base_model,node_fakestore toneMint
```

## Components

### HTTP API

- [Product Controller](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/ProductController.java): `src/main/java/dev/naman/productservicettsevening/controllers/ProductController.java`
- [Category Controller](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/controllers/CategoryController.java): `src/main/java/dev/naman/productservicettsevening/controllers/CategoryController.java`

### Service Layer

- [Product Service](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/ProductService.java): `src/main/java/dev/naman/productservicettsevening/services/ProductService.java`
- [FakeStore Product Service](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/FakeStoreProductServiceImpl.java): `src/main/java/dev/naman/productservicettsevening/services/FakeStoreProductServiceImpl.java`
- [Category Service](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/CategoryService.java): `src/main/java/dev/naman/productservicettsevening/services/CategoryService.java`
- [FakeStore Category Service](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/services/FakeStoreCategoryServiceImpl.java): `src/main/java/dev/naman/productservicettsevening/services/FakeStoreCategoryServiceImpl.java`

### Data Models

- [Product DTO](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/dtos/ProductDto.java): `src/main/java/dev/naman/productservicettsevening/dtos/ProductDto.java`
- [Product Model](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/Product.java): `src/main/java/dev/naman/productservicettsevening/models/Product.java`
- [Category Model](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/Category.java): `src/main/java/dev/naman/productservicettsevening/models/Category.java`
- [Base Model](https://github.com/ejazulhaque13/productservicettsevening/blob/master/src/main/java/dev/naman/productservicettsevening/models/BaseModel.java): `src/main/java/dev/naman/productservicettsevening/models/BaseModel.java`

### Other components

- **API Client**
- **FakeStore API**

## Connections

- API Client → Product Controller: requests
- API Client → Category Controller: requests
- Product Controller → Product Service: calls
- Product Service → FakeStore Product Service: implemented by
- FakeStore Product Service → FakeStore API: fetches products
- FakeStore API → FakeStore Product Service: returns DTOs
- FakeStore Product Service → Product DTO: maps response
- FakeStore Product Service → Product Model: builds models
- FakeStore Product Service → Category Model: sets category
- Product Model → Base Model: extends
- Category Controller → Category Service: declared dependency
- Category Service → FakeStore Category Service: implemented by
