# navinreddy20/ecom-proj architecture

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

- Interactive diagram: https://gitdiagram.com/navinreddy20/ecom-proj
- Repository: https://github.com/navinreddy20/ecom-proj

## Overview

This is a Spring Boot product-catalog API. Clients create, retrieve, update, delete, and search products; image uploads are stored with product records and image data can be retrieved separately. The controller delegates operations to a service, which uses a JPA repository over the Product entity. Source excerpts establish those calls and the persistence abstraction; database configuration and startup wiring are not shown, so the startup-to-controller link is unverified.

Main entry points: [`src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java`](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java) (Product repository), [`src/main/java/com/telusko/ecom_proj/controller/ProductController.java`](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/controller/ProductController.java) (Product controller), [`src/main/java/com/telusko/ecom_proj/service/ProductService.java`](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/service/ProductService.java) (Product service), [`src/main/java/com/telusko/ecom_proj/EcomProjApplication.java`](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/EcomProjApplication.java) (Spring Boot app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_controller["Product controller"]
end

subgraph group_domain["Catalog domain"]
  node_service["Product service"]
  node_product["Product entity<br/>[Product.java]"]
end

subgraph group_persistence["Persistence"]
  node_repository["Product repository<br/>[ProductRepo.java]"]
  node_database[("JPA database")]
end

subgraph group_runtime["Runtime"]
  node_application["Spring Boot app"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_controller
node_controller -->|"delegates operations"| node_service
node_service -->|"calls queries"| node_repository
node_repository -->|"maps records"| node_product
node_repository -->|"persists via JPA"| node_database
node_application -.->|"starts web app"| node_controller

click node_controller "https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/controller/ProductController.java"
click node_service "https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/service/ProductService.java"
click node_product "https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/model/Product.java"
click node_repository "https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java"
click node_application "https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/EcomProjApplication.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_controller,node_client toneBlue
class node_service,node_product toneAmber
class node_repository,node_database toneMint
class node_application toneRose
```

## Components

### API

- [Product controller](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/controller/ProductController.java): `src/main/java/com/telusko/ecom_proj/controller/ProductController.java`

### Catalog domain

- [Product service](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/service/ProductService.java): `src/main/java/com/telusko/ecom_proj/service/ProductService.java`
- [Product entity](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/model/Product.java): `src/main/java/com/telusko/ecom_proj/model/Product.java`

### Persistence

- [Product repository](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java): `src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java`
- **JPA database**

### Runtime

- [Spring Boot app](https://github.com/navinreddy20/ecom-proj/blob/master/src/main/java/com/telusko/ecom_proj/EcomProjApplication.java): `src/main/java/com/telusko/ecom_proj/EcomProjApplication.java`

### Other components

- **API client**

## Connections

- API client → Product controller: sends requests (evidence: `src/main/java/com/telusko/ecom_proj/controller/ProductController.java`)
- Product controller → Product service: delegates operations (evidence: `src/main/java/com/telusko/ecom_proj/controller/ProductController.java`)
- Product service → Product repository: calls queries (evidence: `src/main/java/com/telusko/ecom_proj/service/ProductService.java`)
- Product repository → Product entity: maps records (evidence: `src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java`)
- Product repository → JPA database: persists via JPA (evidence: `src/main/java/com/telusko/ecom_proj/repo/ProductRepo.java`)
- Spring Boot app → Product controller: starts web app
