# ashutoshkumar2103/jshopshopping-testing architecture

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

- Interactive diagram: https://gitdiagram.com/ashutoshkumar2103/jshopshopping-testing
- Repository: https://github.com/ashutoshkumar2103/jshopshopping-testing

## Overview

JShop is a Spring Boot shopping API for users, product owners, and admins. Users register and log in, browse verified products, manage a cart, and place orders; product owners register, gain admin approval, and manage products; admins verify owners and products. Controllers delegate to services, which use DAOs for persistence. The README also describes API automation, but its implementation is not mapped here; sampled code covers only part of the backend, so uncertain DAO-to-repository wiring is omitted.

Main entry points: [`Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/AdminService.java`](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/AdminService.java) (Admin service), [`Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductDao.java`](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductDao.java) (Product DAO), [`Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserService.java`](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserService.java) (User service), [`Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOwnerService.java`](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOwnerService.java) (Owner service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Accounts &amp; Approval"]
  node_user_api["User API"]
  node_user_service["User service<br/>[UserService.java]"]
  node_owner_api["Owner API"]
  node_owner_service["Owner service"]
  node_admin_api["Admin API"]
  node_admin_service["Admin service<br/>[AdminService.java]"]
end

subgraph group_catalog["Product Catalog"]
  node_product_api["Product API"]
  node_product_service["Product service"]
end

subgraph group_commerce["Cart &amp; Orders"]
  node_cart_api["Cart API"]
  node_cart_service["Cart service"]
  node_order_api["Order API"]
  node_order_service["Order service"]
end

subgraph group_data["Persistence Layer"]
  node_user_dao["User DAO<br/>[UserDao.java]"]
  node_owner_dao["Owner DAO"]
  node_admin_dao["Admin DAO<br/>[AdminDao.java]"]
  node_product_dao["Product DAO<br/>[ProductDao.java]"]
  node_cart_dao["Cart DAO<br/>[UserCartDao.java]"]
  node_order_dao["Order DAO"]
end

node_user(("User"))
node_owner(("Product owner"))
node_admin(("Admin"))
node_mysql[("MySQL database")]

node_user -->|"sends requests"| node_user_api
node_owner -->|"sends requests"| node_owner_api
node_admin -->|"sends requests"| node_admin_api
node_user_api -->|"delegates"| node_user_service
node_owner_api -->|"delegates"| node_owner_service
node_admin_api -->|"delegates"| node_admin_service
node_product_api -->|"delegates"| node_product_service
node_cart_api -->|"delegates"| node_cart_service
node_order_api -->|"delegates"| node_order_service
node_user_service -->|"calls"| node_user_dao
node_user_service -->|"validates credentials"| node_admin_service
node_owner_service -->|"calls"| node_owner_dao
node_owner_service -->|"validates credentials"| node_admin_service
node_admin_service -->|"calls"| node_admin_dao
node_admin_service -->|"checks product"| node_product_dao
node_product_service -->|"calls"| node_product_dao
node_product_service -->|"looks up owner"| node_owner_dao
node_order_service -->|"checks product"| node_product_dao
node_order_service -->|"saves order"| node_order_dao
node_cart_service -->|"calls"| node_cart_dao
node_user_dao -->|"persists data"| node_mysql
node_owner_dao -->|"persists data"| node_mysql
node_admin_dao -->|"persists data"| node_mysql
node_product_dao -->|"persists data"| node_mysql
node_cart_dao -->|"persists data"| node_mysql
node_order_dao -->|"persists data"| node_mysql

click node_user_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserController.java"
click node_user_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserService.java"
click node_owner_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOwnerController.java"
click node_owner_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOwnerService.java"
click node_admin_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/AdminController.java"
click node_admin_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/AdminService.java"
click node_product_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductController.java"
click node_product_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductService.java"
click node_cart_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserCartController.java"
click node_cart_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserCartService.java"
click node_order_api "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOrderController.java"
click node_order_service "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOrderService.java"
click node_user_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserDao.java"
click node_owner_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOwnerDao.java"
click node_admin_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/AdminDao.java"
click node_product_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductDao.java"
click node_cart_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserCartDao.java"
click node_order_dao "https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOrderDao.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_user_api,node_user_service,node_owner_api,node_owner_service,node_admin_api,node_admin_service,node_user toneBlue
class node_product_api,node_product_service,node_mysql toneAmber
class node_cart_api,node_cart_service,node_order_api,node_order_service toneMint
class node_user_dao,node_owner_dao,node_admin_dao,node_product_dao,node_cart_dao,node_order_dao toneRose
class node_owner,node_admin toneIndigo
```

## Components

### Accounts & Approval

- [User API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserController.java`
- [User service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserService.java`
- [Owner API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOwnerController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOwnerController.java`
- [Owner service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOwnerService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOwnerService.java`
- [Admin API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/AdminController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/AdminController.java`
- [Admin service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/AdminService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/AdminService.java`

### Product Catalog

- [Product API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductController.java`
- [Product service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductService.java`

### Cart & Orders

- [Cart API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserCartController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/UserCartController.java`
- [Cart service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserCartService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/UserCartService.java`
- [Order API](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOrderController.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/controller/ProductOrderController.java`
- [Order service](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOrderService.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/service/ProductOrderService.java`

### Persistence Layer

- [User DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserDao.java`
- [Owner DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOwnerDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOwnerDao.java`
- [Admin DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/AdminDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/AdminDao.java`
- [Product DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductDao.java`
- [Cart DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserCartDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/UserCartDao.java`
- [Order DAO](https://github.com/ashutoshkumar2103/jshopshopping-testing/blob/main/Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOrderDao.java): `Project/j-shop-spring-boot/src/main/java/com/jshop/jshopspringboot/dao/ProductOrderDao.java`

### Other components

- **User**
- **Product owner**
- **Admin**
- **MySQL database**

## Connections

- User → User API: sends requests
- Product owner → Owner API: sends requests
- Admin → Admin API: sends requests
- User API → User service: delegates
- Owner API → Owner service: delegates
- Admin API → Admin service: delegates
- Product API → Product service: delegates
- Cart API → Cart service: delegates
- Order API → Order service: delegates
- User service → User DAO: calls
- User service → Admin service: validates credentials
- Owner service → Owner DAO: calls
- Owner service → Admin service: validates credentials
- Admin service → Admin DAO: calls
- Admin service → Product DAO: checks product
- Product service → Product DAO: calls
- Product service → Owner DAO: looks up owner
- Order service → Product DAO: checks product
- Order service → Order DAO: saves order
- Cart service → Cart DAO: calls
- User DAO → MySQL database: persists data
- Owner DAO → MySQL database: persists data
- Admin DAO → MySQL database: persists data
- Product DAO → MySQL database: persists data
- Cart DAO → MySQL database: persists data
- Order DAO → MySQL database: persists data
