# jaiswaladi246/10-microservice-appliction architecture

> Architecture diagram of the GitHub repository jaiswaladi246/10-microservice-appliction, 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/jaiswaladi246/10-microservice-appliction
- Repository: https://github.com/jaiswaladi246/10-microservice-appliction

## Overview

Online Boutique is a multi-language gRPC storefront. Users browse products, manage a cart, and place orders through the web frontend; checkout prepares the order and coordinates cart retrieval, product and currency lookups, shipping quotes, payment, cart clearing, and confirmation email. The README also documents recommendations and contextual ads. The checkout calls and cart-store wiring are visible in sampled source; the frontend-to-service and optional browsing integrations are not, so those links are dashed and unverified.

Main entry points: [`src/checkoutservice/main.go`](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/checkoutservice/main.go) (Checkout Orchestrator), [`src/frontend/handlers.go`](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/frontend/handlers.go) (Web Frontend), [`src/cartservice/src/cartstore/ICartStore.cs`](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/ICartStore.cs) (Cart Storage), [`src/cartservice/src/services/CartService.cs`](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/services/CartService.cs) (Cart RPC)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_frontend["Web Frontend<br/>[handlers.go]"]
end

subgraph group_commerce["Commerce Services"]
  node_cart["Cart RPC<br/>[CartService.cs]"]
  node_cartstore["Cart Storage<br/>[ICartStore.cs]"]
  node_redis[("Redis Cart Store<br/>[RedisCartStore.cs]")]
  node_alloydb[("AlloyDB Cart Store")]
  node_spanner[("Spanner Cart Store")]
  node_currency["Currency Conversion<br/>[server.js]"]
end

subgraph group_checkout["Order Fulfillment"]
  node_checkout["Checkout Orchestrator<br/>[main.go]"]
  node_shipping["Shipping<br/>[main.go]"]
  node_payment["Payment<br/>[server.js]"]
  node_email["Order Email<br/>[email_server.py]"]
end

subgraph group_support["Discovery and Support"]
  node_catalog["Product Catalog<br/>[product_catalog.go]"]
  node_recommendation["Recommendations"]
  node_ads["Contextual Ads<br/>[AdService.java]"]
  node_loadgen["Traffic Generator<br/>[locustfile.py]"]
end

node_shopper(("Shopper"))

node_shopper -->|"browses"| node_frontend
node_frontend -.->|"places orders"| node_checkout
node_frontend -.->|"browses products"| node_catalog
node_frontend -.->|"manages cart"| node_cart
node_frontend -.->|"requests suggestions"| node_recommendation
node_frontend -.->|"requests ads"| node_ads
node_checkout -->|"gets and empties"| node_cart
node_checkout -->|"gets products"| node_catalog
node_checkout -->|"converts prices"| node_currency
node_checkout -->|"gets quote and ships"| node_shipping
node_checkout -->|"charges card"| node_payment
node_checkout -->|"sends confirmation"| node_email
node_cart -->|"delegates storage"| node_cartstore
node_cartstore -.->|"implemented by"| node_redis
node_cartstore -.->|"implemented by"| node_alloydb
node_cartstore -.->|"implemented by"| node_spanner
node_loadgen -.->|"generates traffic"| node_frontend

click node_frontend "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/frontend/handlers.go"
click node_catalog "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/productcatalogservice/product_catalog.go"
click node_recommendation "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/recommendationservice/recommendation_server.py"
click node_ads "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/adservice/src/main/java/hipstershop/AdService.java"
click node_checkout "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/checkoutservice/main.go"
click node_cart "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/services/CartService.cs"
click node_cartstore "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/ICartStore.cs"
click node_redis "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/RedisCartStore.cs"
click node_alloydb "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/AlloyDBCartStore.cs"
click node_spanner "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/SpannerCartStore.cs"
click node_currency "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/currencyservice/server.js"
click node_shipping "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/shippingservice/main.go"
click node_payment "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/paymentservice/server.js"
click node_email "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/emailservice/email_server.py"
click node_loadgen "https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/loadgenerator/locustfile.py"

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_frontend toneBlue
class node_cart,node_cartstore,node_redis,node_alloydb,node_spanner,node_currency toneAmber
class node_checkout,node_shipping,node_payment,node_email toneMint
class node_catalog,node_recommendation,node_ads,node_loadgen toneRose
class node_shopper toneIndigo
```

## Components

### Storefront

- [Web Frontend](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/frontend/handlers.go): `src/frontend/handlers.go`

### Commerce Services

- [Cart RPC](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/services/CartService.cs): `src/cartservice/src/services/CartService.cs`
- [Cart Storage](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/ICartStore.cs): `src/cartservice/src/cartstore/ICartStore.cs`
- [Redis Cart Store](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/RedisCartStore.cs): `src/cartservice/src/cartstore/RedisCartStore.cs`
- [AlloyDB Cart Store](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/AlloyDBCartStore.cs): `src/cartservice/src/cartstore/AlloyDBCartStore.cs`
- [Spanner Cart Store](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/cartservice/src/cartstore/SpannerCartStore.cs): `src/cartservice/src/cartstore/SpannerCartStore.cs`
- [Currency Conversion](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/currencyservice/server.js): `src/currencyservice/server.js`

### Order Fulfillment

- [Checkout Orchestrator](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/checkoutservice/main.go): `src/checkoutservice/main.go`
- [Shipping](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/shippingservice/main.go): `src/shippingservice/main.go`
- [Payment](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/paymentservice/server.js): `src/paymentservice/server.js`
- [Order Email](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/emailservice/email_server.py): `src/emailservice/email_server.py`

### Discovery and Support

- [Product Catalog](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/productcatalogservice/product_catalog.go): `src/productcatalogservice/product_catalog.go`
- [Recommendations](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/recommendationservice/recommendation_server.py): `src/recommendationservice/recommendation_server.py`
- [Contextual Ads](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/adservice/src/main/java/hipstershop/AdService.java): `src/adservice/src/main/java/hipstershop/AdService.java`
- [Traffic Generator](https://github.com/jaiswaladi246/10-microservice-appliction/blob/main/src/loadgenerator/locustfile.py): `src/loadgenerator/locustfile.py`

### Other components

- **Shopper**

## Connections

- Shopper → Web Frontend: browses
- Web Frontend → Checkout Orchestrator: places orders
- Web Frontend → Product Catalog: browses products
- Web Frontend → Cart RPC: manages cart
- Web Frontend → Recommendations: requests suggestions
- Web Frontend → Contextual Ads: requests ads
- Checkout Orchestrator → Cart RPC: gets and empties (evidence: `src/checkoutservice/main.go`)
- Checkout Orchestrator → Product Catalog: gets products (evidence: `src/checkoutservice/main.go`)
- Checkout Orchestrator → Currency Conversion: converts prices (evidence: `src/checkoutservice/main.go`)
- Checkout Orchestrator → Shipping: gets quote and ships (evidence: `src/checkoutservice/main.go`)
- Checkout Orchestrator → Payment: charges card (evidence: `src/checkoutservice/main.go`)
- Checkout Orchestrator → Order Email: sends confirmation (evidence: `src/checkoutservice/main.go`)
- Cart RPC → Cart Storage: delegates storage (evidence: `src/cartservice/src/services/CartService.cs`)
- Cart Storage → Redis Cart Store: implemented by (evidence: `src/cartservice/src/cartstore/RedisCartStore.cs`)
- Cart Storage → AlloyDB Cart Store: implemented by (evidence: `src/cartservice/src/cartstore/AlloyDBCartStore.cs`)
- Cart Storage → Spanner Cart Store: implemented by (evidence: `src/cartservice/src/cartstore/SpannerCartStore.cs`)
- Traffic Generator → Web Frontend: generates traffic
