# sameerbaral/greencart-grocery-delivery-website architecture

> Architecture diagram of the GitHub repository sameerbaral/greencart-grocery-delivery-website, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sameerbaral/greencart-grocery-delivery-website
- Repository: https://github.com/sameerbaral/greencart-grocery-delivery-website

## Overview

GreenCart is a grocery e-commerce application with shopper and seller workflows. Shoppers browse products, manage a cart and delivery addresses, and place or review orders; sellers manage inventory and order fulfillment. The graph follows the documented capabilities and sampled entry points; several route and controller details, including address and seller-order wiring, are represented at the directory level because their source was not sampled.

Main entry points: [`server/server.js`](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/server.js) (Express API), [`client/src/context/AppContext.jsx`](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/context/AppContext.jsx) (Shared app state), [`client/src/App.jsx`](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/App.jsx) (Web application), [`server/models`](https://github.com/sameerbaral/greencart-grocery-delivery-website/tree/main/server/models) (MongoDB records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shopper_ui["Shopper experience"]
  node_web_app["Web application<br/>[App.jsx]"]
  node_app_state["Shared app state<br/>[AppContext.jsx]"]
  node_catalog["Product discovery<br/>[AllProducts.jsx]"]
  node_product_detail["Product details<br/>[ProductDetails.jsx]"]
  node_cart_ui["Cart and checkout<br/>[Cart.jsx]"]
  node_address_ui["Delivery addresses<br/>[AddAddress.jsx]"]
  node_order_history["Order history<br/>[MyOrders.jsx]"]
end

subgraph group_seller_ui["Seller dashboard"]
  node_seller_ui["Seller portal<br/>[SellerLayout.jsx]"]
  node_seller_inventory["Inventory tools"]
  node_seller_orders["Order fulfillment<br/>[Orders.jsx]"]
end

subgraph group_api["Commerce API"]
  node_api_server["Express API<br/>[server.js]"]
  node_user_api["User endpoints<br/>[userRoute.js]"]
  node_seller_api["Seller endpoints<br/>[sellerRoute.js]"]
  node_product_api["Product endpoints<br/>[productRoute.js]"]
  node_cart_api["Cart endpoints<br/>[cartRoute.js]"]
  node_address_api["Address endpoints<br/>[addressRoute.js]"]
  node_order_api["Order endpoints<br/>[orderRoute.js]"]
  node_user_logic["User and cart logic<br/>[userController.js]"]
  node_product_logic["Catalog management"]
  node_address_logic["Address management"]
  node_order_logic["Order and payment logic<br/>[orderController.js]"]
  node_seller_logic["Seller authentication"]
  node_cart_logic["Cart persistence<br/>[cartController.js]"]
end

subgraph group_integrations["Data and services"]
  node_mongo[("MongoDB records")]
  node_cloudinary["Cloudinary images<br/>[cloudinary.js]"]
  node_stripe["Stripe Checkout"]
end

node_customer(("Shopper"))
node_seller(("Seller"))

node_customer -->|"uses"| node_web_app
node_seller -->|"uses"| node_seller_ui
node_web_app -->|"provides state"| node_app_state
node_web_app -->|"routes to"| node_catalog
node_web_app -->|"routes to"| node_product_detail
node_web_app -->|"routes to"| node_cart_ui
node_web_app -->|"routes to"| node_address_ui
node_web_app -->|"routes to"| node_order_history
node_web_app -->|"routes to"| node_seller_ui
node_app_state -->|"fetches products"| node_product_api
node_app_state -->|"updates cart"| node_cart_api
node_app_state -->|"checks identity"| node_user_api
node_app_state -->|"checks seller"| node_seller_api
node_catalog -->|"reads products"| node_app_state
node_product_detail -->|"uses catalog"| node_app_state
node_cart_ui -->|"uses cart"| node_app_state
node_address_ui -->|"manages address"| node_address_api
node_order_history -->|"loads orders"| node_order_api
node_seller_ui -->|"routes to"| node_seller_inventory
node_seller_ui -->|"routes to"| node_seller_orders
node_seller_inventory -->|"manages products"| node_product_api
node_seller_orders -->|"manages orders"| node_order_api
node_app_state -->|"sends requests"| node_api_server
node_address_ui -->|"sends requests"| node_api_server
node_order_history -->|"sends requests"| node_api_server
node_api_server -->|"mounts"| node_user_api
node_api_server -->|"mounts"| node_seller_api
node_api_server -->|"mounts"| node_product_api
node_api_server -->|"mounts"| node_cart_api
node_api_server -->|"mounts"| node_address_api
node_api_server -->|"mounts"| node_order_api
node_user_api -->|"dispatches"| node_user_logic
node_seller_api -->|"dispatches"| node_seller_logic
node_product_api -->|"dispatches"| node_product_logic
node_cart_api -->|"dispatches"| node_cart_logic
node_address_api -->|"dispatches"| node_address_logic
node_order_api -->|"dispatches"| node_order_logic
node_user_logic -->|"reads/writes"| node_mongo
node_cart_logic -->|"updates cart"| node_mongo
node_product_logic -->|"reads/writes"| node_mongo
node_address_logic -->|"reads/writes"| node_mongo
node_order_logic -->|"reads/writes"| node_mongo
node_product_logic -->|"uploads images"| node_cloudinary
node_order_logic -->|"creates/verifies payment"| node_stripe
node_stripe -.->|"payment webhook"| node_api_server
node_api_server -->|"dispatches webhook"| node_order_logic
node_order_logic -->|"updates payment state"| node_mongo

click node_web_app "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/App.jsx"
click node_app_state "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/context/AppContext.jsx"
click node_catalog "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/AllProducts.jsx"
click node_product_detail "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/ProductDetails.jsx"
click node_cart_ui "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/Cart.jsx"
click node_address_ui "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/AddAddress.jsx"
click node_order_history "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/MyOrders.jsx"
click node_seller_ui "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/seller/SellerLayout.jsx"
click node_seller_inventory "https://github.com/sameerbaral/greencart-grocery-delivery-website/tree/main/client/src/pages/seller"
click node_seller_orders "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/seller/Orders.jsx"
click node_api_server "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/server.js"
click node_user_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/userRoute.js"
click node_seller_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/sellerRoute.js"
click node_product_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/productRoute.js"
click node_cart_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/cartRoute.js"
click node_address_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/addressRoute.js"
click node_order_api "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/orderRoute.js"
click node_user_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/userController.js"
click node_product_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/productController.js"
click node_address_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/addressController.js"
click node_order_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/orderController.js"
click node_seller_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/sellerController.js"
click node_cart_logic "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/cartController.js"
click node_mongo "https://github.com/sameerbaral/greencart-grocery-delivery-website/tree/main/server/models"
click node_cloudinary "https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/configs/cloudinary.js"

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_app,node_app_state,node_catalog,node_product_detail,node_cart_ui,node_address_ui,node_order_history toneBlue
class node_seller_ui,node_seller_inventory,node_seller_orders toneAmber
class node_api_server,node_user_api,node_seller_api,node_product_api,node_cart_api,node_address_api,node_order_api,node_user_logic,node_product_logic,node_address_logic,node_order_logic,node_seller_logic,node_cart_logic toneMint
class node_mongo,node_cloudinary,node_stripe toneRose
class node_customer,node_seller toneIndigo
```

## Components

### Shopper experience

- [Web application](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Shared app state](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/context/AppContext.jsx): `client/src/context/AppContext.jsx`
- [Product discovery](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/AllProducts.jsx): `client/src/pages/AllProducts.jsx`
- [Product details](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/ProductDetails.jsx): `client/src/pages/ProductDetails.jsx`
- [Cart and checkout](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/Cart.jsx): `client/src/pages/Cart.jsx`
- [Delivery addresses](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/AddAddress.jsx): `client/src/pages/AddAddress.jsx`
- [Order history](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/MyOrders.jsx): `client/src/pages/MyOrders.jsx`

### Seller dashboard

- [Seller portal](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/seller/SellerLayout.jsx): `client/src/pages/seller/SellerLayout.jsx`
- [Inventory tools](https://github.com/sameerbaral/greencart-grocery-delivery-website/tree/main/client/src/pages/seller): `client/src/pages/seller`
- [Order fulfillment](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/client/src/pages/seller/Orders.jsx): `client/src/pages/seller/Orders.jsx`

### Commerce API

- [Express API](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/server.js): `server/server.js`
- [User endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/userRoute.js): `server/routes/userRoute.js`
- [Seller endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/sellerRoute.js): `server/routes/sellerRoute.js`
- [Product endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/productRoute.js): `server/routes/productRoute.js`
- [Cart endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/cartRoute.js): `server/routes/cartRoute.js`
- [Address endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/addressRoute.js): `server/routes/addressRoute.js`
- [Order endpoints](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/routes/orderRoute.js): `server/routes/orderRoute.js`
- [User and cart logic](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/userController.js): `server/controllers/userController.js`
- [Catalog management](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/productController.js): `server/controllers/productController.js`
- [Address management](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/addressController.js): `server/controllers/addressController.js`
- [Order and payment logic](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/orderController.js): `server/controllers/orderController.js`
- [Seller authentication](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/sellerController.js): `server/controllers/sellerController.js`
- [Cart persistence](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/controllers/cartController.js): `server/controllers/cartController.js`

### Data and services

- [MongoDB records](https://github.com/sameerbaral/greencart-grocery-delivery-website/tree/main/server/models): `server/models`
- [Cloudinary images](https://github.com/sameerbaral/greencart-grocery-delivery-website/blob/main/server/configs/cloudinary.js): `server/configs/cloudinary.js`
- **Stripe Checkout**

### Other components

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

## Connections

- Shopper → Web application: uses
- Seller → Seller portal: uses
- Web application → Shared app state: provides state
- Web application → Product discovery: routes to
- Web application → Product details: routes to
- Web application → Cart and checkout: routes to
- Web application → Delivery addresses: routes to
- Web application → Order history: routes to
- Web application → Seller portal: routes to
- Shared app state → Product endpoints: fetches products
- Shared app state → Cart endpoints: updates cart
- Shared app state → User endpoints: checks identity
- Shared app state → Seller endpoints: checks seller
- Product discovery → Shared app state: reads products
- Product details → Shared app state: uses catalog
- Cart and checkout → Shared app state: uses cart
- Delivery addresses → Address endpoints: manages address
- Order history → Order endpoints: loads orders
- Seller portal → Inventory tools: routes to
- Seller portal → Order fulfillment: routes to
- Inventory tools → Product endpoints: manages products
- Order fulfillment → Order endpoints: manages orders
- Shared app state → Express API: sends requests
- Delivery addresses → Express API: sends requests
- Order history → Express API: sends requests
- Express API → User endpoints: mounts
- Express API → Seller endpoints: mounts
- Express API → Product endpoints: mounts
- Express API → Cart endpoints: mounts
- Express API → Address endpoints: mounts
- Express API → Order endpoints: mounts
- User endpoints → User and cart logic: dispatches
- Seller endpoints → Seller authentication: dispatches
- Product endpoints → Catalog management: dispatches
- Cart endpoints → Cart persistence: dispatches
- Address endpoints → Address management: dispatches
- Order endpoints → Order and payment logic: dispatches
- User and cart logic → MongoDB records: reads/writes
- Cart persistence → MongoDB records: updates cart
- Catalog management → MongoDB records: reads/writes
- Address management → MongoDB records: reads/writes
- Order and payment logic → MongoDB records: reads/writes
- Catalog management → Cloudinary images: uploads images
- Order and payment logic → Stripe Checkout: creates/verifies payment
- Stripe Checkout → Express API: payment webhook
- Express API → Order and payment logic: dispatches webhook
- Order and payment logic → MongoDB records: updates payment state
