# zhihaogoh/book-havan-bookstore architecture

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

- Interactive diagram: https://gitdiagram.com/zhihaogoh/book-havan-bookstore
- Repository: https://github.com/zhihaogoh/book-havan-bookstore

## Overview

This repository pairs a React bookstore storefront with a Laravel REST API. Shoppers browse and search books, inspect details, and use account features, a cart, and a staged checkout; the backend exposes catalog, account, address, cart, wishlist, and order operations. The README describes checkout and account capabilities, while sampled backend code confirms catalog, cart, authentication, and order-item behavior. The frontend-to-API wiring and several unsampled stages are not verified, so those connections are omitted.

Main entry points: [`Bookstore-Front-End/latest/src/App.jsx`](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/App.jsx) (Page Router), [`Bookstore-Back-End/routes/api.php`](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/routes/api.php) (API Routes), [`Bookstore-Back-End/app/Http/Controllers/CartController.php`](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/CartController.php) (Cart Operations), [`Bookstore-Back-End/app/Http/Controllers/OrderItemController.php`](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/OrderItemController.php) (Order Items)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_app["Page Router<br/>[App.jsx]"]
  node_browse["Browse Books<br/>[fliter_product.jsx]"]
  node_product["Book Details<br/>[product_detial.jsx]"]
end

subgraph group_identity["Identity and Profile"]
  node_accountui["Account Pages<br/>[edit_profile.jsx]"]
  node_authcontext["Auth Context<br/>[AuthContext.jsx]"]
  node_authclient["Auth Client<br/>[auth.jsx]"]
  node_userapi["User Operations<br/>[userController.php]"]
  node_userrecord[("User Records<br/>[User.php]")]
end

subgraph group_commerce["Cart and Orders"]
  node_cartui["Shopping Cart<br/>[shopping_cart.jsx]"]
  node_checkout["Checkout Steps<br/>[check_out.jsx]"]
  node_cartapi["Cart Operations<br/>[CartController.php]"]
  node_orderitemsapi["Order Items"]
  node_cartrecord[("Cart Records<br/>[Cart.php]")]
  node_orderrecord[("Order Records<br/>[Orders.php]")]
  node_itemrecord[("Order Item Records<br/>[OrderItem.php]")]
end

subgraph group_api["REST API"]
  node_apiclient["API Client<br/>[api.js]"]
  node_routes["API Routes<br/>[api.php]"]
end

subgraph group_domain["Catalog and Records"]
  node_booksapi["Book Operations<br/>[BookController.php]"]
  node_bookrecord[("Book Records<br/>[Books.php]")]
end

node_shopper(("Shopper"))

node_shopper -->|"opens storefront"| node_app
node_app -->|"routes to"| node_browse
node_app -->|"routes to"| node_product
node_app -->|"protects route"| node_cartui
node_app -->|"protects route"| node_checkout
node_app -->|"protects route"| node_accountui
node_app -->|"provides auth"| node_authcontext
node_authcontext -->|"uses"| node_authclient
node_authclient -->|"calls"| node_apiclient
node_routes -->|"routes requests"| node_booksapi
node_routes -->|"routes requests"| node_cartapi
node_routes -->|"routes requests"| node_userapi
node_routes -->|"routes requests"| node_orderitemsapi
node_booksapi -->|"queries and updates"| node_bookrecord
node_cartapi -->|"creates and queries"| node_cartrecord
node_cartapi -->|"checks stock"| node_bookrecord
node_userapi -->|"creates and updates"| node_userrecord
node_orderitemsapi -->|"updates totals"| node_orderrecord
node_orderitemsapi -->|"creates and deletes"| node_itemrecord

click node_app "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/App.jsx"
click node_browse "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/fliter_product/fliter_product.jsx"
click node_product "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/product_detail/product_detial.jsx"
click node_cartui "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/Cart/shopping_cart.jsx"
click node_checkout "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/check_out/check_out.jsx"
click node_accountui "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/profile/edit_profile.jsx"
click node_authcontext "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/context/AuthContext.jsx"
click node_authclient "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/auth/auth.jsx"
click node_apiclient "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/services/api.js"
click node_routes "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/routes/api.php"
click node_booksapi "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/BookController.php"
click node_cartapi "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/CartController.php"
click node_userapi "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/userController.php"
click node_orderitemsapi "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/OrderItemController.php"
click node_bookrecord "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Books.php"
click node_cartrecord "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Cart.php"
click node_userrecord "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/User.php"
click node_orderrecord "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Orders.php"
click node_itemrecord "https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/OrderItem.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_app,node_browse,node_product toneBlue
class node_accountui,node_authcontext,node_authclient,node_userapi,node_userrecord toneAmber
class node_cartui,node_checkout,node_cartapi,node_orderitemsapi,node_cartrecord,node_orderrecord,node_itemrecord toneMint
class node_apiclient,node_routes toneRose
class node_booksapi,node_bookrecord,node_shopper toneIndigo
```

## Components

### Storefront

- [Page Router](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/App.jsx): `Bookstore-Front-End/latest/src/App.jsx`
- [Browse Books](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/fliter_product/fliter_product.jsx): `Bookstore-Front-End/latest/src/pages/fliter_product/fliter_product.jsx`
- [Book Details](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/product_detail/product_detial.jsx): `Bookstore-Front-End/latest/src/pages/product_detail/product_detial.jsx`

### Identity and Profile

- [Account Pages](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/profile/edit_profile.jsx): `Bookstore-Front-End/latest/src/pages/profile/edit_profile.jsx`
- [Auth Context](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/context/AuthContext.jsx): `Bookstore-Front-End/latest/src/context/AuthContext.jsx`
- [Auth Client](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/auth/auth.jsx): `Bookstore-Front-End/latest/src/auth/auth.jsx`
- [User Operations](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/userController.php): `Bookstore-Back-End/app/Http/Controllers/userController.php`
- [User Records](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/User.php): `Bookstore-Back-End/app/Models/User.php`

### Cart and Orders

- [Shopping Cart](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/Cart/shopping_cart.jsx): `Bookstore-Front-End/latest/src/pages/Cart/shopping_cart.jsx`
- [Checkout Steps](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/pages/check_out/check_out.jsx): `Bookstore-Front-End/latest/src/pages/check_out/check_out.jsx`
- [Cart Operations](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/CartController.php): `Bookstore-Back-End/app/Http/Controllers/CartController.php`
- [Order Items](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/OrderItemController.php): `Bookstore-Back-End/app/Http/Controllers/OrderItemController.php`
- [Cart Records](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Cart.php): `Bookstore-Back-End/app/Models/Cart.php`
- [Order Records](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Orders.php): `Bookstore-Back-End/app/Models/Orders.php`
- [Order Item Records](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/OrderItem.php): `Bookstore-Back-End/app/Models/OrderItem.php`

### REST API

- [API Client](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Front-End/latest/src/services/api.js): `Bookstore-Front-End/latest/src/services/api.js`
- [API Routes](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/routes/api.php): `Bookstore-Back-End/routes/api.php`

### Catalog and Records

- [Book Operations](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Http/Controllers/BookController.php): `Bookstore-Back-End/app/Http/Controllers/BookController.php`
- [Book Records](https://github.com/zhihaogoh/book-havan-bookstore/blob/main/Bookstore-Back-End/app/Models/Books.php): `Bookstore-Back-End/app/Models/Books.php`

### Other components

- **Shopper**

## Connections

- Shopper → Page Router: opens storefront (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Browse Books: routes to (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Book Details: routes to (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Shopping Cart: protects route (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Checkout Steps: protects route (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Account Pages: protects route (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Page Router → Auth Context: provides auth (evidence: `Bookstore-Front-End/latest/src/App.jsx`)
- Auth Context → Auth Client: uses (evidence: `Bookstore-Front-End/latest/src/context/AuthContext.jsx`)
- Auth Client → API Client: calls (evidence: `Bookstore-Front-End/latest/src/auth/auth.jsx`)
- API Routes → Book Operations: routes requests (evidence: `Bookstore-Back-End/routes/api.php`)
- API Routes → Cart Operations: routes requests (evidence: `Bookstore-Back-End/routes/api.php`)
- API Routes → User Operations: routes requests (evidence: `Bookstore-Back-End/routes/api.php`)
- API Routes → Order Items: routes requests (evidence: `Bookstore-Back-End/routes/api.php`)
- Book Operations → Book Records: queries and updates (evidence: `Bookstore-Back-End/app/Http/Controllers/BookController.php`)
- Cart Operations → Cart Records: creates and queries (evidence: `Bookstore-Back-End/app/Http/Controllers/CartController.php`)
- Cart Operations → Book Records: checks stock (evidence: `Bookstore-Back-End/app/Http/Controllers/CartController.php`)
- User Operations → User Records: creates and updates (evidence: `Bookstore-Back-End/app/Http/Controllers/userController.php`)
- Order Items → Order Records: updates totals (evidence: `Bookstore-Back-End/app/Http/Controllers/OrderItemController.php`)
- Order Items → Order Item Records: creates and deletes (evidence: `Bookstore-Back-End/app/Http/Controllers/OrderItemController.php`)
