# narankhadka/ecommerce-springboot-project architecture

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

- Interactive diagram: https://gitdiagram.com/narankhadka/ecommerce-springboot-project
- Repository: https://github.com/narankhadka/ecommerce-springboot-project

## Overview

SabaikoPasal is a multi-vendor marketplace: customers discover products, manage a cart, check out and track orders; sellers manage listings and fulfillment; admins oversee the marketplace. The graph combines the README’s documented capabilities with the sampled React routing, authentication, product-filter and review code. Most controller-to-service wiring and the eSewa flow are not sampled, so those links are shown only where the README documents the API workflow; uncertain internal calls are omitted.

Main entry points: [`efont/src/api/api.js`](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/api/api.js) (HTTP client), [`backend/src/main/java/com/ecommerce/project/service`](https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/service) (Business services), [`efont/src/store/actions/index.js`](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/store/actions/index.js) (API actions), [`efont/src/App.jsx`](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/App.jsx) (React routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Customer storefront"]
  node_app["React routes<br/>[App.jsx]"]
  node_store["Redux state<br/>[store.js]"]
  node_actions["API actions<br/>[index.js]"]
  node_api["HTTP client<br/>[api.js]"]
  node_product_ui["Catalog browsing<br/>[Products.jsx]"]
  node_cart_ui["Shopping cart<br/>[Cart.jsx]"]
  node_checkout_ui["Checkout<br/>[Checkout.jsx]"]
  node_seller_ui["Seller dashboard"]
  node_admin_ui["Admin dashboard<br/>[Dashboard.jsx]"]
end

subgraph group_commerce["Commerce services"]
  node_product_controller["Product API"]
  node_cart_controller["Cart API"]
  node_order_controller["Orders API"]
  node_payment_controller["Payment API"]
  node_review_controller["Reviews API"]
  node_recommendations["Recommendations"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Authentication API"]
  node_security["JWT security"]
end

subgraph group_operations["Seller and admin"]
  node_seller_admin_api["Seller and admin APIs"]
  node_promotion_api["Promotion API"]
end

subgraph group_platform["Persistence and integrations"]
  node_services["Business services"]
  node_repositories["JPA repositories"]
  node_database[("Marketplace database")]
  node_esewa["eSewa gateway"]
  node_email["Mail service<br/>[EmailService.java]"]
end

node_shopper(("Shopper"))
node_seller(("Seller"))
node_admin(("Administrator"))

node_shopper -->|"browses and orders"| node_app
node_seller -->|"manages shop"| node_app
node_admin -->|"oversees marketplace"| node_app
node_app -->|"provides state"| node_store
node_app -->|"reloads cart"| node_actions
node_product_ui -->|"dispatches search"| node_actions
node_cart_ui -.->|"manages cart"| node_actions
node_checkout_ui -.->|"submits checkout"| node_actions
node_seller_ui -.->|"requests dashboard"| node_actions
node_admin_ui -.->|"requests analytics"| node_actions
node_actions -.->|"sends requests"| node_api
node_api -.->|"catalog requests"| node_product_controller
node_api -.->|"cart requests"| node_cart_controller
node_api -.->|"order requests"| node_order_controller
node_api -.->|"payment requests"| node_payment_controller
node_api -.->|"authentication requests"| node_auth_controller
node_api -.->|"management requests"| node_seller_admin_api
node_api -.->|"promotion requests"| node_promotion_api
node_api -.->|"review requests"| node_review_controller
node_auth_controller -->|"authenticates and issues JWT"| node_security
node_auth_controller -->|"reads and saves accounts"| node_repositories
node_auth_controller -->|"sends account mail"| node_email
node_product_controller -.->|"delegates catalog work"| node_services
node_cart_controller -.->|"delegates cart work"| node_services
node_order_controller -.->|"delegates order work"| node_services
node_payment_controller -.->|"verifies payment"| node_esewa
node_payment_controller -.->|"initiates order payment"| node_services
node_review_controller -->|"calls review service"| node_services
node_services -.->|"reads and writes"| node_repositories
node_repositories -->|"queries entities"| node_database
node_recommendations -.->|"queries purchase history"| node_repositories
node_seller_admin_api -.->|"delegates management"| node_services
node_promotion_api -.->|"delegates promotions"| node_services
node_services -.->|"sends order notices"| node_email

click node_app "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/App.jsx"
click node_store "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/store/reducers/store.js"
click node_actions "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/store/actions/index.js"
click node_api "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/api/api.js"
click node_product_ui "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/products/Products.jsx"
click node_cart_ui "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/cart/Cart.jsx"
click node_checkout_ui "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/checkout/Checkout.jsx"
click node_seller_ui "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/admin/dashboard/SellerDashboard.jsx"
click node_admin_ui "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/admin/dashboard/Dashboard.jsx"
click node_auth_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/AuthController.java"
click node_security "https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/security"
click node_product_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/ProductController.java"
click node_cart_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/CartController.java"
click node_order_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/OrderController.java"
click node_payment_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/PaymentController.java"
click node_review_controller "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/ReviewController.java"
click node_recommendations "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/service/RecommendationServiceImpl.java"
click node_seller_admin_api "https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/controller"
click node_promotion_api "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/PromotionController.java"
click node_services "https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/service"
click node_repositories "https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/repositories"
click node_email "https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/service/EmailService.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_app,node_store,node_actions,node_api,node_product_ui,node_cart_ui,node_checkout_ui,node_seller_ui,node_admin_ui toneBlue
class node_product_controller,node_cart_controller,node_order_controller,node_payment_controller,node_review_controller,node_recommendations toneAmber
class node_auth_controller,node_security toneMint
class node_seller_admin_api,node_promotion_api toneRose
class node_services,node_repositories,node_database,node_esewa,node_email,node_shopper,node_seller,node_admin toneIndigo
```

## Components

### Customer storefront

- [React routes](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/App.jsx): `efont/src/App.jsx`
- [Redux state](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/store/reducers/store.js): `efont/src/store/reducers/store.js`
- [API actions](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/store/actions/index.js): `efont/src/store/actions/index.js`
- [HTTP client](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/api/api.js): `efont/src/api/api.js`
- [Catalog browsing](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/products/Products.jsx): `efont/src/components/products/Products.jsx`
- [Shopping cart](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/cart/Cart.jsx): `efont/src/components/cart/Cart.jsx`
- [Checkout](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/checkout/Checkout.jsx): `efont/src/components/checkout/Checkout.jsx`
- [Seller dashboard](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/admin/dashboard/SellerDashboard.jsx): `efont/src/components/admin/dashboard/SellerDashboard.jsx`
- [Admin dashboard](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/efont/src/components/admin/dashboard/Dashboard.jsx): `efont/src/components/admin/dashboard/Dashboard.jsx`

### Commerce services

- [Product API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/ProductController.java): `backend/src/main/java/com/ecommerce/project/controller/ProductController.java`
- [Cart API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/CartController.java): `backend/src/main/java/com/ecommerce/project/controller/CartController.java`
- [Orders API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/OrderController.java): `backend/src/main/java/com/ecommerce/project/controller/OrderController.java`
- [Payment API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/PaymentController.java): `backend/src/main/java/com/ecommerce/project/controller/PaymentController.java`
- [Reviews API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/ReviewController.java): `backend/src/main/java/com/ecommerce/project/controller/ReviewController.java`
- [Recommendations](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/service/RecommendationServiceImpl.java): `backend/src/main/java/com/ecommerce/project/service/RecommendationServiceImpl.java`

### Identity and access

- [Authentication API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/AuthController.java): `backend/src/main/java/com/ecommerce/project/controller/AuthController.java`
- [JWT security](https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/security): `backend/src/main/java/com/ecommerce/project/security`

### Seller and admin

- [Seller and admin APIs](https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/controller): `backend/src/main/java/com/ecommerce/project/controller`
- [Promotion API](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/controller/PromotionController.java): `backend/src/main/java/com/ecommerce/project/controller/PromotionController.java`

### Persistence and integrations

- [Business services](https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/service): `backend/src/main/java/com/ecommerce/project/service`
- [JPA repositories](https://github.com/narankhadka/ecommerce-springboot-project/tree/main/backend/src/main/java/com/ecommerce/project/repositories): `backend/src/main/java/com/ecommerce/project/repositories`
- **Marketplace database**
- **eSewa gateway**
- [Mail service](https://github.com/narankhadka/ecommerce-springboot-project/blob/main/backend/src/main/java/com/ecommerce/project/service/EmailService.java): `backend/src/main/java/com/ecommerce/project/service/EmailService.java`

### Other components

- **Shopper**
- **Seller**
- **Administrator**

## Connections

- Shopper → React routes: browses and orders
- Seller → React routes: manages shop
- Administrator → React routes: oversees marketplace
- React routes → Redux state: provides state
- React routes → API actions: reloads cart
- Catalog browsing → API actions: dispatches search
- Shopping cart → API actions: manages cart
- Checkout → API actions: submits checkout
- Seller dashboard → API actions: requests dashboard
- Admin dashboard → API actions: requests analytics
- API actions → HTTP client: sends requests
- HTTP client → Product API: catalog requests
- HTTP client → Cart API: cart requests
- HTTP client → Orders API: order requests
- HTTP client → Payment API: payment requests
- HTTP client → Authentication API: authentication requests
- HTTP client → Seller and admin APIs: management requests
- HTTP client → Promotion API: promotion requests
- HTTP client → Reviews API: review requests
- Authentication API → JWT security: authenticates and issues JWT
- Authentication API → JPA repositories: reads and saves accounts
- Authentication API → Mail service: sends account mail
- Product API → Business services: delegates catalog work
- Cart API → Business services: delegates cart work
- Orders API → Business services: delegates order work
- Payment API → eSewa gateway: verifies payment
- Payment API → Business services: initiates order payment
- Reviews API → Business services: calls review service
- Business services → JPA repositories: reads and writes
- JPA repositories → Marketplace database: queries entities
- Recommendations → JPA repositories: queries purchase history
- Seller and admin APIs → Business services: delegates management
- Promotion API → Business services: delegates promotions
- Business services → Mail service: sends order notices
