# hoang2351220169-lgtm/cnpm architecture

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

- Interactive diagram: https://gitdiagram.com/hoang2351220169-lgtm/cnpm
- Repository: https://github.com/hoang2351220169-lgtm/cnpm

## Overview

BAO FASHION is a Laravel clothing shop. Customers browse and filter products, register or sign in, maintain a session cart, check out, and view their orders; admins manage products and monitor order status. The web routes own most of these workflows, with a dedicated controller for product administration and Eloquent models for domain data. The README and route excerpts establish the principal flows; some views and middleware are unsampled, so their internal behavior is represented only where documented.

Main entry points: [`routes/web.php`](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/routes/web.php) (Web workflows), [`app/Models/Product.php`](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Product.php) (Product), [`app/Http/Controllers/ProductController.php`](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Http/Controllers/ProductController.php) (Product management), [`app/Models/Order.php`](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Order.php) (Order)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shop["Storefront"]
  node_web["Web workflows<br/>[web.php]"]
  node_product_controller["Product management"]
  node_store_views["Store pages<br/>[index.blade.php]"]
  node_home_view["Home page<br/>[home.blade.php]"]
  node_admin_views["Admin pages<br/>[products.blade.php]"]
end

subgraph group_identity["Accounts and access"]
  node_account_views["Account forms<br/>[register.blade.php]"]
  node_user["User account<br/>[User.php]"]
end

subgraph group_commerce["Cart and orders"]
  node_cart_view["Cart page<br/>[index.blade.php]"]
  node_checkout_view["Checkout page<br/>[index.blade.php]"]
  node_orders_views["Order pages<br/>[index.blade.php]"]
  node_order["Order<br/>[Order.php]"]
  node_order_item["Order item<br/>[OrderItem.php]"]
end

subgraph group_catalog["Catalog and persistence"]
  node_category["Category<br/>[Category.php]"]
  node_product["Product<br/>[Product.php]"]
  node_mysql[("MySQL database<br/>[database.php]")]
end

node_customer(("Customer"))
node_admin(("Admin"))

node_customer -->|"requests shop"| node_web
node_admin -->|"requests admin"| node_web
node_web -->|"renders home"| node_home_view
node_web -->|"renders catalog"| node_store_views
node_web -->|"renders forms"| node_account_views
node_web -->|"renders cart"| node_cart_view
node_web -->|"renders checkout"| node_checkout_view
node_web -->|"renders orders"| node_orders_views
node_web -->|"renders admin"| node_admin_views
node_web -->|"routes products"| node_product_controller
node_web -->|"reads and updates"| node_product
node_web -->|"reads categories"| node_category
node_web -->|"creates and reads"| node_order
node_web -->|"creates items"| node_order_item
node_product_controller -->|"manages products"| node_product
node_product_controller -->|"loads categories"| node_category
node_product_controller -->|"renders admin"| node_admin_views
node_user -->|"has orders"| node_order
node_order -->|"has items"| node_order_item
node_order_item -->|"references product"| node_product
node_category -->|"has products"| node_product
node_product -.->|"persists catalog"| node_mysql
node_order -.->|"persists orders"| node_mysql
node_user -.->|"persists accounts"| node_mysql

click node_web "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/routes/web.php"
click node_product_controller "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Http/Controllers/ProductController.php"
click node_store_views "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/products/index.blade.php"
click node_home_view "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/home.blade.php"
click node_account_views "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/auth/register.blade.php"
click node_admin_views "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/admin/products.blade.php"
click node_cart_view "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/cart/index.blade.php"
click node_checkout_view "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/checkout/index.blade.php"
click node_orders_views "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/orders/index.blade.php"
click node_user "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/User.php"
click node_category "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Category.php"
click node_product "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Product.php"
click node_order "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Order.php"
click node_order_item "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/OrderItem.php"
click node_mysql "https://github.com/hoang2351220169-lgtm/cnpm/blob/main/config/database.php"

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_web,node_product_controller,node_store_views,node_home_view,node_admin_views toneBlue
class node_account_views,node_user toneAmber
class node_cart_view,node_checkout_view,node_orders_views,node_order,node_order_item toneMint
class node_category,node_product,node_mysql toneRose
class node_customer,node_admin toneIndigo
```

## Components

### Storefront

- [Web workflows](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/routes/web.php): `routes/web.php`
- [Product management](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Http/Controllers/ProductController.php): `app/Http/Controllers/ProductController.php`
- [Store pages](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/products/index.blade.php): `resources/views/products/index.blade.php`
- [Home page](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/home.blade.php): `resources/views/home.blade.php`
- [Admin pages](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/admin/products.blade.php): `resources/views/admin/products.blade.php`

### Accounts and access

- [Account forms](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/auth/register.blade.php): `resources/views/auth/register.blade.php`
- [User account](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/User.php): `app/Models/User.php`

### Cart and orders

- [Cart page](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/cart/index.blade.php): `resources/views/cart/index.blade.php`
- [Checkout page](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/checkout/index.blade.php): `resources/views/checkout/index.blade.php`
- [Order pages](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/resources/views/orders/index.blade.php): `resources/views/orders/index.blade.php`
- [Order](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Order.php): `app/Models/Order.php`
- [Order item](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/OrderItem.php): `app/Models/OrderItem.php`

### Catalog and persistence

- [Category](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Category.php): `app/Models/Category.php`
- [Product](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/app/Models/Product.php): `app/Models/Product.php`
- [MySQL database](https://github.com/hoang2351220169-lgtm/cnpm/blob/main/config/database.php): `config/database.php`

### Other components

- **Customer**
- **Admin**

## Connections

- Customer → Web workflows: requests shop (evidence: `README.md`)
- Admin → Web workflows: requests admin (evidence: `README.md`)
- Web workflows → Home page: renders home (evidence: `routes/web.php`)
- Web workflows → Store pages: renders catalog (evidence: `routes/web.php`)
- Web workflows → Account forms: renders forms (evidence: `routes/web.php`)
- Web workflows → Cart page: renders cart (evidence: `routes/web.php`)
- Web workflows → Checkout page: renders checkout (evidence: `routes/web.php`)
- Web workflows → Order pages: renders orders (evidence: `routes/web.php`)
- Web workflows → Admin pages: renders admin (evidence: `routes/web.php`)
- Web workflows → Product management: routes products (evidence: `routes/web.php`)
- Web workflows → Product: reads and updates (evidence: `routes/web.php`)
- Web workflows → Category: reads categories (evidence: `routes/web.php`)
- Web workflows → Order: creates and reads (evidence: `routes/web.php`)
- Web workflows → Order item: creates items (evidence: `routes/web.php`)
- Product management → Product: manages products (evidence: `app/Http/Controllers/ProductController.php`)
- Product management → Category: loads categories (evidence: `app/Http/Controllers/ProductController.php`)
- Product management → Admin pages: renders admin (evidence: `app/Http/Controllers/ProductController.php`)
- User account → Order: has orders (evidence: `app/Models/User.php`)
- Order → Order item: has items (evidence: `app/Models/Order.php`)
- Order item → Product: references product (evidence: `app/Models/OrderItem.php`)
- Category → Product: has products (evidence: `app/Models/Category.php`)
- Product → MySQL database: persists catalog (evidence: `README.md`)
- Order → MySQL database: persists orders (evidence: `README.md`)
- User account → MySQL database: persists accounts (evidence: `README.md`)
