# manogna-maggidi/ecommerce-multivendor architecture

> Architecture diagram of the GitHub repository manogna-maggidi/ecommerce-multivendor, 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/manogna-maggidi/ecommerce-multivendor
- Repository: https://github.com/manogna-maggidi/ecommerce-multivendor

## Overview

Govind Store is a Spring Boot multivendor-commerce API for customers, sellers, and administrators. The customer journey runs from OTP/JWT access through catalog and cart to order creation, external payment, and post-payment transaction/report updates; separate seller and admin capabilities manage listings, operations, approvals, coupons, and homepage content. Sampled code confirms the review persistence path, authentication/email interactions, and checkout/payment callbacks. Other feature links reflect README descriptions and the source tree; unsampled service internals are represented at their enclosing directory level.

Main entry points: [`src/main/java/com/govind/ecommerce/controller/PaymentController.java`](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/PaymentController.java) (Payment callback), [`src/main/java/com/govind/ecommerce/controller/OrderController.java`](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/OrderController.java) (Order API), [`src/main/java/com/govind/ecommerce/service/impl/AuthServiceImpl.java`](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/impl/AuthServiceImpl.java) (Auth service), [`src/main/java/com/govind/ecommerce/controller/ReviewController.java`](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/ReviewController.java) (Review API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_controller["Auth API"]
  node_auth_impl["Auth service"]
  node_jwt["JWT security<br/>[JwtProvider.java]"]
  node_user_service["User service"]
  node_verification_repo["OTP storage"]
  node_email_service["Email service<br/>[EmailService.java]"]
end

subgraph group_commerce["Shopping"]
  node_catalog_api["Catalog APIs"]
  node_product_service["Product service"]
  node_cart_api["Cart APIs"]
  node_cart_service["Cart service"]
  node_review_api["Review API"]
  node_review_service["Review service"]
  node_review_repo["Review repository"]
end

subgraph group_payments["Payments"]
  node_order_api["Order API"]
  node_order_service["Order service"]
  node_payment_service["Payment service"]
  node_payment_api["Payment callback"]
  node_payment_store["Payment order store"]
  node_transaction_service["Transactions"]
end

subgraph group_operations["Store Operations"]
  node_seller_api["Seller APIs"]
  node_seller_service["Seller service"]
  node_seller_reports["Seller reports"]
  node_admin_api["Admin APIs"]
  node_coupon_api["Coupon APIs"]
  node_home_api["Homepage content"]
end

node_customer(("Customer"))
node_seller_actor(("Seller"))
node_admin_actor(("Admin"))
node_mail["Email provider"]
node_payment_providers["Razorpay / Stripe"]
node_mysql[("MySQL")]

node_customer -->|"requests access"| node_auth_controller
node_auth_controller -->|"delegates auth"| node_auth_impl
node_auth_impl -->|"stores OTP"| node_verification_repo
node_auth_impl -->|"sends OTP"| node_email_service
node_email_service -->|"sends email"| node_mail
node_auth_impl -->|"generates token"| node_jwt
node_customer -->|"browses"| node_catalog_api
node_catalog_api -->|"requests products"| node_product_service
node_customer -->|"manages cart"| node_cart_api
node_cart_api -->|"delegates cart"| node_cart_service
node_customer -->|"reviews products"| node_review_api
node_review_api -->|"resolves identity"| node_user_service
node_review_api -->|"loads product"| node_product_service
node_review_api -->|"delegates review"| node_review_service
node_review_service -->|"reads / writes"| node_review_repo
node_customer -->|"checks out"| node_order_api
node_order_api -->|"resolves identity"| node_user_service
node_order_api -->|"loads cart"| node_cart_service
node_order_api -->|"creates orders"| node_order_service
node_order_api -->|"creates payment"| node_payment_service
node_payment_service -.->|"creates links"| node_payment_providers
node_order_api -->|"saves Razorpay link"| node_payment_store
node_payment_api -->|"resolves identity"| node_user_service
node_payment_api -->|"verifies payment"| node_payment_service
node_payment_api -->|"creates records"| node_transaction_service
node_payment_api -->|"loads seller"| node_seller_service
node_payment_api -->|"updates metrics"| node_seller_reports
node_payment_api -.->|"verifies payment"| node_payment_providers
node_seller_actor -->|"manages store"| node_seller_api
node_seller_api -->|"requests seller data"| node_seller_service
node_seller_api -->|"updates order"| node_order_service
node_seller_api -->|"reads report"| node_seller_reports
node_admin_actor -->|"administers store"| node_admin_api
node_admin_api -->|"approves sellers"| node_seller_service
node_admin_actor -->|"manages coupons"| node_coupon_api
node_admin_actor -->|"manages homepage"| node_home_api

click node_auth_controller "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AuthController.java"
click node_auth_impl "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/impl/AuthServiceImpl.java"
click node_jwt "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/config/JwtProvider.java"
click node_user_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_verification_repo "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/VerificationCodeRepository.java"
click node_email_service "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/EmailService.java"
click node_catalog_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/ProductController.java"
click node_product_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_cart_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/CartController.java"
click node_cart_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_review_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/ReviewController.java"
click node_review_service "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/impl/ReviewServiceImpl.java"
click node_review_repo "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/ReviewRepository.java"
click node_order_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/OrderController.java"
click node_order_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_payment_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_payment_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/PaymentController.java"
click node_payment_store "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/PaymentOrderRepository.java"
click node_transaction_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_seller_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/SellerController.java"
click node_seller_service "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_seller_reports "https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service"
click node_admin_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AdminController.java"
click node_coupon_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AdminCouponController.java"
click node_home_api "https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/HomeController.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_auth_controller,node_auth_impl,node_jwt,node_user_service,node_verification_repo,node_email_service toneBlue
class node_catalog_api,node_product_service,node_cart_api,node_cart_service,node_review_api,node_review_service,node_review_repo,node_mysql toneAmber
class node_order_api,node_order_service,node_payment_service,node_payment_api,node_payment_store,node_transaction_service toneMint
class node_seller_api,node_seller_service,node_seller_reports,node_admin_api,node_coupon_api,node_home_api toneRose
class node_customer,node_seller_actor,node_admin_actor,node_mail,node_payment_providers toneIndigo
```

## Components

### Identity

- [Auth API](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AuthController.java): `src/main/java/com/govind/ecommerce/controller/AuthController.java`
- [Auth service](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/impl/AuthServiceImpl.java): `src/main/java/com/govind/ecommerce/service/impl/AuthServiceImpl.java`
- [JWT security](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/config/JwtProvider.java): `src/main/java/com/govind/ecommerce/config/JwtProvider.java`
- [User service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [OTP storage](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/VerificationCodeRepository.java): `src/main/java/com/govind/ecommerce/repository/VerificationCodeRepository.java`
- [Email service](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/EmailService.java): `src/main/java/com/govind/ecommerce/service/EmailService.java`

### Shopping

- [Catalog APIs](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/ProductController.java): `src/main/java/com/govind/ecommerce/controller/ProductController.java`
- [Product service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Cart APIs](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/CartController.java): `src/main/java/com/govind/ecommerce/controller/CartController.java`
- [Cart service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Review API](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/ReviewController.java): `src/main/java/com/govind/ecommerce/controller/ReviewController.java`
- [Review service](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/service/impl/ReviewServiceImpl.java): `src/main/java/com/govind/ecommerce/service/impl/ReviewServiceImpl.java`
- [Review repository](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/ReviewRepository.java): `src/main/java/com/govind/ecommerce/repository/ReviewRepository.java`

### Payments

- [Order API](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/OrderController.java): `src/main/java/com/govind/ecommerce/controller/OrderController.java`
- [Order service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Payment service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Payment callback](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/PaymentController.java): `src/main/java/com/govind/ecommerce/controller/PaymentController.java`
- [Payment order store](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/repository/PaymentOrderRepository.java): `src/main/java/com/govind/ecommerce/repository/PaymentOrderRepository.java`
- [Transactions](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`

### Store Operations

- [Seller APIs](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/SellerController.java): `src/main/java/com/govind/ecommerce/controller/SellerController.java`
- [Seller service](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Seller reports](https://github.com/manogna-maggidi/ecommerce-multivendor/tree/main/src/main/java/com/govind/ecommerce/service): `src/main/java/com/govind/ecommerce/service`
- [Admin APIs](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AdminController.java): `src/main/java/com/govind/ecommerce/controller/AdminController.java`
- [Coupon APIs](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/AdminCouponController.java): `src/main/java/com/govind/ecommerce/controller/AdminCouponController.java`
- [Homepage content](https://github.com/manogna-maggidi/ecommerce-multivendor/blob/main/src/main/java/com/govind/ecommerce/controller/HomeController.java): `src/main/java/com/govind/ecommerce/controller/HomeController.java`

### Other components

- **Customer**
- **Seller**
- **Admin**
- **Email provider**
- **Razorpay / Stripe**
- **MySQL**

## Connections

- Customer → Auth API: requests access
- Auth API → Auth service: delegates auth
- Auth service → OTP storage: stores OTP
- Auth service → Email service: sends OTP
- Email service → Email provider: sends email
- Auth service → JWT security: generates token
- Customer → Catalog APIs: browses
- Catalog APIs → Product service: requests products
- Customer → Cart APIs: manages cart
- Cart APIs → Cart service: delegates cart
- Customer → Review API: reviews products
- Review API → User service: resolves identity
- Review API → Product service: loads product
- Review API → Review service: delegates review
- Review service → Review repository: reads / writes
- Customer → Order API: checks out
- Order API → User service: resolves identity
- Order API → Cart service: loads cart
- Order API → Order service: creates orders
- Order API → Payment service: creates payment
- Payment service → Razorpay / Stripe: creates links
- Order API → Payment order store: saves Razorpay link
- Payment callback → User service: resolves identity
- Payment callback → Payment service: verifies payment
- Payment callback → Transactions: creates records
- Payment callback → Seller service: loads seller
- Payment callback → Seller reports: updates metrics
- Payment callback → Razorpay / Stripe: verifies payment
- Seller → Seller APIs: manages store
- Seller APIs → Seller service: requests seller data
- Seller APIs → Order service: updates order
- Seller APIs → Seller reports: reads report
- Admin → Admin APIs: administers store
- Admin APIs → Seller service: approves sellers
- Admin → Coupon APIs: manages coupons
- Admin → Homepage content: manages homepage
