# manivannanbgi007/grocery-app architecture

> Architecture diagram of the GitHub repository manivannanbgi007/grocery-app, 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/manivannanbgi007/grocery-app
- Repository: https://github.com/manivannanbgi007/grocery-app

## Overview

Grocery Platform is a multi-vendor marketplace spanning customer, vendor, delivery, admin, and super-admin panels. A customer-facing flow runs from the Fresh Grocery storefront through the gateway and account services to catalog discovery, cart checkout, orders, payment, and delivery; notifications and reporting provide supporting capabilities. The repository also documents catalog CQRS, event-driven service integration, and an AI assistant with confirmation-gated shopping actions. Most service internals were not sampled, so cross-service links below reflect README-level architecture rather than inspected call sites.

Main entry points: [`api-gateway/src/main/java/com/grocery/gateway/ApiGatewayApplication.java`](https://github.com/manivannanbgi007/grocery-app/blob/master/api-gateway/src/main/java/com/grocery/gateway/ApiGatewayApplication.java) (API Gateway), [`order-service/src/main/java/com/grocery/order/service/OrderSagaService.java`](https://github.com/manivannanbgi007/grocery-app/blob/master/order-service/src/main/java/com/grocery/order/service/OrderSagaService.java) (Orders and Saga), [`fresh-grocery/src/routes.tsx`](https://github.com/manivannanbgi007/grocery-app/blob/master/fresh-grocery/src/routes.tsx) (Fresh Grocery), [`mcp-client-service/src/main/java/com/grocery/mcpclient/service/ConversationService.java`](https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/service/ConversationService.java) (Assistant Conversation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Panels and Gateway"]
  node_storefront["Fresh Grocery<br/>[routes.tsx]"]
  node_gateway["API Gateway"]
end

subgraph group_commerce["Catalog and Commerce"]
  node_productwrite["Product Management<br/>[Product.java]"]
  node_productread["Catalog Search"]
  node_store["Store Services"]
  node_inventory["Inventory"]
  node_cart["Cart and Coupons"]
  node_orders["Orders and Saga"]
  node_payments["Payments"]
end

subgraph group_fulfillment["Fulfillment and Engagement"]
  node_delivery["Delivery"]
  node_notifications["Notifications"]
end

subgraph group_platform["Platform Services"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_reports["Reports"]
  node_platformadmin["Platform Administration"]
  node_kafka["Kafka Events"]
  node_elasticsearch[("Elasticsearch")]
end

subgraph group_assistant["AI Assistant"]
  node_mcp["Assistant API"]
  node_conversation["Assistant Conversation"]
  node_approval["Action Approval"]
  node_mcpserver["MCP Tools"]
end

node_customer(("Customer"))
node_razorpay["Razorpay"]
node_ollama["Ollama"]

node_customer -->|"browses and orders"| node_storefront
node_storefront -->|"sends API requests"| node_gateway
node_gateway -->|"routes requests"| node_auth
node_gateway -->|"routes requests"| node_productread
node_gateway -->|"routes requests"| node_cart
node_gateway -->|"routes requests"| node_orders
node_gateway -->|"routes requests"| node_payments
node_gateway -->|"routes requests"| node_delivery
node_productwrite -->|"publishes changes"| node_kafka
node_kafka -->|"feeds catalog projection"| node_productread
node_productread -->|"queries catalog"| node_elasticsearch
node_cart -.->|"starts checkout"| node_orders
node_orders -->|"coordinates saga"| node_payments
node_orders -.->|"initiates fulfillment"| node_delivery
node_kafka -->|"delivers events"| node_notifications
node_kafka -.->|"feeds projections"| node_reports
node_gateway -.->|"routes chat requests"| node_mcp
node_storefront -->|"offers shopping chat"| node_mcp
node_mcp -.->|"handles conversation"| node_conversation
node_conversation -->|"invokes tools"| node_mcpserver
node_mcpserver -->|"uses language model"| node_ollama
node_conversation -->|"prepares actions"| node_approval
node_approval -.->|"confirms cart changes"| node_cart
node_approval -.->|"confirms order actions"| node_orders
node_payments -->|"uses checkout and webhooks"| node_razorpay

click node_storefront "https://github.com/manivannanbgi007/grocery-app/blob/master/fresh-grocery/src/routes.tsx"
click node_gateway "https://github.com/manivannanbgi007/grocery-app/blob/master/api-gateway/src/main/java/com/grocery/gateway/ApiGatewayApplication.java"
click node_auth "https://github.com/manivannanbgi007/grocery-app/blob/master/auth-service/src/main/java/com/grocery/auth/service/AuthService.java"
click node_productwrite "https://github.com/manivannanbgi007/grocery-app/blob/master/product-service/src/main/java/com/grocery/product/entity/Product.java"
click node_productread "https://github.com/manivannanbgi007/grocery-app/blob/master/product-read-service/src/main/java/com/grocery/productread/service/ProductQueryService.java"
click node_store "https://github.com/manivannanbgi007/grocery-app/blob/master/store-service/src/main/java/com/grocery/store/service/StoreQueryService.java"
click node_inventory "https://github.com/manivannanbgi007/grocery-app/blob/master/inventory-service/src/main/java/com/grocery/inventory/service/InventoryQueryService.java"
click node_cart "https://github.com/manivannanbgi007/grocery-app/blob/master/cart-service/src/main/java/com/grocery/cart/service/CheckoutService.java"
click node_orders "https://github.com/manivannanbgi007/grocery-app/blob/master/order-service/src/main/java/com/grocery/order/service/OrderSagaService.java"
click node_payments "https://github.com/manivannanbgi007/grocery-app/blob/master/payment-service/src/main/java/com/grocery/payment/service/RazorpayPaymentService.java"
click node_delivery "https://github.com/manivannanbgi007/grocery-app/blob/master/delivery-service/src/main/java/com/grocery/delivery/assignment/DeliveryAssignmentService.java"
click node_notifications "https://github.com/manivannanbgi007/grocery-app/blob/master/notification-service/src/main/java/com/grocery/notification/service/EventNotificationService.java"
click node_reports "https://github.com/manivannanbgi007/grocery-app/blob/master/report-service/src/main/java/com/grocery/report/service/impl/ReportQueryServiceImpl.java"
click node_platformadmin "https://github.com/manivannanbgi007/grocery-app/blob/master/platform-service/src/main/java/com/grocery/platform/service/AuditLogService.java"
click node_mcp "https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/controller/ChatController.java"
click node_conversation "https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/service/ConversationService.java"
click node_approval "https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/service/ApprovalService.java"
click node_mcpserver "https://github.com/manivannanbgi007/grocery-app/tree/master/mcp-server-service"

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_storefront,node_gateway toneBlue
class node_productwrite,node_productread,node_store,node_inventory,node_cart,node_orders,node_payments toneAmber
class node_delivery,node_notifications toneMint
class node_auth,node_reports,node_platformadmin,node_kafka,node_elasticsearch toneRose
class node_mcp,node_conversation,node_approval,node_mcpserver,node_customer,node_razorpay,node_ollama toneIndigo
```

## Components

### Panels and Gateway

- [Fresh Grocery](https://github.com/manivannanbgi007/grocery-app/blob/master/fresh-grocery/src/routes.tsx): `fresh-grocery/src/routes.tsx`
- [API Gateway](https://github.com/manivannanbgi007/grocery-app/blob/master/api-gateway/src/main/java/com/grocery/gateway/ApiGatewayApplication.java): `api-gateway/src/main/java/com/grocery/gateway/ApiGatewayApplication.java`

### Catalog and Commerce

- [Product Management](https://github.com/manivannanbgi007/grocery-app/blob/master/product-service/src/main/java/com/grocery/product/entity/Product.java): `product-service/src/main/java/com/grocery/product/entity/Product.java`
- [Catalog Search](https://github.com/manivannanbgi007/grocery-app/blob/master/product-read-service/src/main/java/com/grocery/productread/service/ProductQueryService.java): `product-read-service/src/main/java/com/grocery/productread/service/ProductQueryService.java`
- [Store Services](https://github.com/manivannanbgi007/grocery-app/blob/master/store-service/src/main/java/com/grocery/store/service/StoreQueryService.java): `store-service/src/main/java/com/grocery/store/service/StoreQueryService.java`
- [Inventory](https://github.com/manivannanbgi007/grocery-app/blob/master/inventory-service/src/main/java/com/grocery/inventory/service/InventoryQueryService.java): `inventory-service/src/main/java/com/grocery/inventory/service/InventoryQueryService.java`
- [Cart and Coupons](https://github.com/manivannanbgi007/grocery-app/blob/master/cart-service/src/main/java/com/grocery/cart/service/CheckoutService.java): `cart-service/src/main/java/com/grocery/cart/service/CheckoutService.java`
- [Orders and Saga](https://github.com/manivannanbgi007/grocery-app/blob/master/order-service/src/main/java/com/grocery/order/service/OrderSagaService.java): `order-service/src/main/java/com/grocery/order/service/OrderSagaService.java`
- [Payments](https://github.com/manivannanbgi007/grocery-app/blob/master/payment-service/src/main/java/com/grocery/payment/service/RazorpayPaymentService.java): `payment-service/src/main/java/com/grocery/payment/service/RazorpayPaymentService.java`

### Fulfillment and Engagement

- [Delivery](https://github.com/manivannanbgi007/grocery-app/blob/master/delivery-service/src/main/java/com/grocery/delivery/assignment/DeliveryAssignmentService.java): `delivery-service/src/main/java/com/grocery/delivery/assignment/DeliveryAssignmentService.java`
- [Notifications](https://github.com/manivannanbgi007/grocery-app/blob/master/notification-service/src/main/java/com/grocery/notification/service/EventNotificationService.java): `notification-service/src/main/java/com/grocery/notification/service/EventNotificationService.java`

### Platform Services

- [Authentication](https://github.com/manivannanbgi007/grocery-app/blob/master/auth-service/src/main/java/com/grocery/auth/service/AuthService.java): `auth-service/src/main/java/com/grocery/auth/service/AuthService.java`
- [Reports](https://github.com/manivannanbgi007/grocery-app/blob/master/report-service/src/main/java/com/grocery/report/service/impl/ReportQueryServiceImpl.java): `report-service/src/main/java/com/grocery/report/service/impl/ReportQueryServiceImpl.java`
- [Platform Administration](https://github.com/manivannanbgi007/grocery-app/blob/master/platform-service/src/main/java/com/grocery/platform/service/AuditLogService.java): `platform-service/src/main/java/com/grocery/platform/service/AuditLogService.java`
- **Kafka Events**
- **Elasticsearch**

### AI Assistant

- [Assistant API](https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/controller/ChatController.java): `mcp-client-service/src/main/java/com/grocery/mcpclient/controller/ChatController.java`
- [Assistant Conversation](https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/service/ConversationService.java): `mcp-client-service/src/main/java/com/grocery/mcpclient/service/ConversationService.java`
- [Action Approval](https://github.com/manivannanbgi007/grocery-app/blob/master/mcp-client-service/src/main/java/com/grocery/mcpclient/service/ApprovalService.java): `mcp-client-service/src/main/java/com/grocery/mcpclient/service/ApprovalService.java`
- [MCP Tools](https://github.com/manivannanbgi007/grocery-app/tree/master/mcp-server-service): `mcp-server-service`

### Other components

- **Customer**
- **Razorpay**
- **Ollama**

## Connections

- Customer → Fresh Grocery: browses and orders (evidence: `README.md`)
- Fresh Grocery → API Gateway: sends API requests (evidence: `README.md`)
- API Gateway → Authentication: routes requests (evidence: `README.md`)
- API Gateway → Catalog Search: routes requests (evidence: `README.md`)
- API Gateway → Cart and Coupons: routes requests (evidence: `README.md`)
- API Gateway → Orders and Saga: routes requests (evidence: `README.md`)
- API Gateway → Payments: routes requests (evidence: `README.md`)
- API Gateway → Delivery: routes requests (evidence: `README.md`)
- Product Management → Kafka Events: publishes changes (evidence: `README.md`)
- Kafka Events → Catalog Search: feeds catalog projection (evidence: `README.md`)
- Catalog Search → Elasticsearch: queries catalog (evidence: `product-read-service/src/main/java/com/grocery/productread/service/ProductQueryService.java`)
- Cart and Coupons → Orders and Saga: starts checkout
- Orders and Saga → Payments: coordinates saga (evidence: `README.md`)
- Orders and Saga → Delivery: initiates fulfillment
- Kafka Events → Notifications: delivers events (evidence: `README.md`)
- Kafka Events → Reports: feeds projections
- API Gateway → Assistant API: routes chat requests
- Fresh Grocery → Assistant API: offers shopping chat (evidence: `README.md`)
- Assistant API → Assistant Conversation: handles conversation
- Assistant Conversation → MCP Tools: invokes tools (evidence: `README.md`)
- MCP Tools → Ollama: uses language model (evidence: `README.md`)
- Assistant Conversation → Action Approval: prepares actions (evidence: `README.md`)
- Action Approval → Cart and Coupons: confirms cart changes
- Action Approval → Orders and Saga: confirms order actions
- Payments → Razorpay: uses checkout and webhooks (evidence: `README.md`)
