# gabrielbugarija/mini-shopify-4806 architecture

> Architecture diagram of the GitHub repository gabrielbugarija/mini-shopify-4806, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gabrielbugarija/mini-shopify-4806
- Repository: https://github.com/gabrielbugarija/mini-shopify-4806

## Overview

Mini-Shopify is a Spring Boot storefront for merchant-managed shops and products, with customer discovery and a simulated purchase flow. The README documents the domain relationship between shops and products and describes the user-facing capabilities, but no source excerpts were provided. Accordingly, the graph shows documented user actions and avoids asserting controller-to-service, persistence, or template wiring that cannot be verified.

Main entry points: [`src/main/java/org/example/ShopController.java`](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ShopController.java) (Shop Management), [`src/main/java/org/example/Shop.java`](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Shop.java) (Shop), [`src/main/java/org/example/ProductController.java`](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ProductController.java) (Product Management), [`src/main/java/org/example/Product.java`](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Product.java) (Product)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_merchant["Merchant Catalog"]
  node_shop_management["Shop Management"]
  node_shop_domain["Shop<br/>[Shop.java]"]
  node_product_management["Product Management"]
  node_product_domain["Product<br/>[Product.java]"]
end

subgraph group_customer["Customer Shopping"]
  node_shop_search["Shop Search"]
  node_catalog_browse["Catalog Browse"]
  node_cart["Shopping Cart"]
  node_checkout["Simulated Checkout"]
  node_inventory["Inventory Limit<br/>[Product.java]"]
end

subgraph group_application["Spring Application"]
  node_application["Spring Boot App"]
end

node_merchant(("Merchant"))
node_customer(("Customer"))

node_merchant -->|"creates shops"| node_shop_management
node_merchant -->|"adds products"| node_product_management
node_shop_management -->|"manages"| node_shop_domain
node_product_management -->|"manages"| node_product_domain
node_shop_domain -->|"contains products"| node_product_domain
node_customer -->|"searches shops"| node_shop_search
node_customer -->|"browses catalog"| node_catalog_browse
node_customer -->|"adds products"| node_cart
node_customer -->|"checks out"| node_checkout
node_checkout -->|"enforces limit"| node_inventory

click node_shop_management "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ShopController.java"
click node_shop_domain "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Shop.java"
click node_product_management "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ProductController.java"
click node_product_domain "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Product.java"
click node_shop_search "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ShopController.java"
click node_catalog_browse "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ProductPageController.java"
click node_inventory "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Product.java"
click node_application "https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/MiniShopifyApplication.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_shop_management,node_shop_domain,node_product_management,node_product_domain toneBlue
class node_shop_search,node_catalog_browse,node_cart,node_checkout,node_inventory toneAmber
class node_application toneMint
class node_merchant,node_customer toneIndigo
```

## Components

### Merchant Catalog

- [Shop Management](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ShopController.java): `src/main/java/org/example/ShopController.java`
- [Shop](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Shop.java): `src/main/java/org/example/Shop.java`
- [Product Management](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ProductController.java): `src/main/java/org/example/ProductController.java`
- [Product](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Product.java): `src/main/java/org/example/Product.java`

### Customer Shopping

- [Shop Search](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ShopController.java): `src/main/java/org/example/ShopController.java`
- [Catalog Browse](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/ProductPageController.java): `src/main/java/org/example/ProductPageController.java`
- **Shopping Cart**
- **Simulated Checkout**
- [Inventory Limit](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/Product.java): `src/main/java/org/example/Product.java`

### Spring Application

- [Spring Boot App](https://github.com/gabrielbugarija/mini-shopify-4806/blob/main/src/main/java/org/example/MiniShopifyApplication.java): `src/main/java/org/example/MiniShopifyApplication.java`

### Other components

- **Merchant**
- **Customer**

## Connections

- Merchant → Shop Management: creates shops (evidence: `README.md`)
- Merchant → Product Management: adds products (evidence: `README.md`)
- Shop Management → Shop: manages (evidence: `README.md`)
- Product Management → Product: manages (evidence: `README.md`)
- Shop → Product: contains products (evidence: `README.md`)
- Customer → Shop Search: searches shops (evidence: `README.md`)
- Customer → Catalog Browse: browses catalog (evidence: `README.md`)
- Customer → Shopping Cart: adds products (evidence: `README.md`)
- Customer → Simulated Checkout: checks out (evidence: `README.md`)
- Simulated Checkout → Inventory Limit: enforces limit (evidence: `README.md`)
