# tokihab/automated-e-commerce-deployment-platform architecture

> Architecture diagram of the GitHub repository tokihab/automated-e-commerce-deployment-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tokihab/automated-e-commerce-deployment-platform
- Repository: https://github.com/tokihab/automated-e-commerce-deployment-platform

## Overview

The source tree describes an e-commerce microservices application, although the README frames the repository as a deployment platform. The principal user journey is browsing products, maintaining a basket, authenticating, and submitting an order; ordering then coordinates buyer/payment validation and order-status events. Catalog, basket, identity, ordering, payment, and background processing are represented as distinct product stages, with event-bus infrastructure as an internal layer. Several runtime modules are present only in the tree, so their connections are omitted or shown as unverified; deployment-tool capabilities in the README are not represented because their implementation is not in the supplied tree.

Main entry points: [`src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs`](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs) (RabbitMQ event bus), [`src/microservices/eShop.Identity.API/Identity.API/Program.cs`](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Program.cs) (Identity server), [`src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs`](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs) (Grace-period worker), [`src/microservices/eShop.WebApp/WebApp/Program.cs`](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebApp/Program.cs) (Web application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_webapp["Web application<br/>[Program.cs]"]
  node_catalogclient["Catalog client<br/>[CatalogService.cs]"]
  node_basketclient["Basket client<br/>[BasketService.cs]"]
end

subgraph group_identity["Identity"]
  node_identityui["Account UI"]
  node_identityserver["Identity server<br/>[Program.cs]"]
  node_identityuser["User profile<br/>[ApplicationUser.cs]"]
  node_identityconfig["OIDC configuration<br/>[Config.cs]"]
  node_identitydb[("Identity database")]
end

subgraph group_commerce["Commerce services"]
  node_catalogapi["Catalog API<br/>[CatalogApi.cs]"]
  node_catalogai["Catalog AI<br/>[CatalogAI.cs]"]
  node_catalogdb[("Catalog database<br/>[CatalogContext.cs]")]
  node_basketapi["Basket gRPC<br/>[BasketService.cs]"]
  node_basketstore[("Redis basket store")]
  node_ordersapi["Orders API<br/>[OrdersApi.cs]"]
  node_ordercommands["Order commands"]
  node_buyerhandler["Buyer validation"]
  node_buyer["Buyer aggregate<br/>[Buyer.cs]"]
  node_orderingdb[("Ordering database<br/>[OrderingContext.cs]")]
  node_requestmanager["Request idempotency<br/>[RequestManager.cs]"]
  node_payment["Payment processor<br/>[Program.cs]"]
  node_graceworker["Grace-period worker"]
end

subgraph group_messaging["Messaging"]
  node_eventbus["RabbitMQ event bus"]
  node_eventhandler["Event handlers"]
  node_eventlog[("Event log")]
  node_graceevent["Grace confirmation event"]
end

node_shopper(("Shopper"))

node_shopper -.->|"uses"| node_webapp
node_webapp -.->|"offers catalog"| node_catalogclient
node_webapp -.->|"offers basket"| node_basketclient
node_catalogclient -.->|"requests products"| node_catalogapi
node_catalogapi -.->|"reads catalog"| node_catalogdb
node_catalogapi -.->|"AI capability"| node_catalogai
node_basketclient -.->|"calls gRPC"| node_basketapi
node_basketapi -.->|"reads and writes"| node_basketstore
node_shopper -.->|"signs in"| node_identityui
node_identityui -->|"authenticates user"| node_identityuser
node_identityserver -->|"loads clients"| node_identityconfig
node_identityserver -->|"configures identity"| node_identityuser
node_identityserver -->|"stores identity"| node_identitydb
node_shopper -.->|"submits order"| node_ordersapi
node_ordersapi -.->|"dispatches command"| node_ordercommands
node_buyerhandler -->|"creates or verifies"| node_buyer
node_buyerhandler -.->|"publishes status event"| node_eventbus
node_requestmanager -->|"checks and saves"| node_orderingdb
node_graceworker -->|"queries submitted orders"| node_orderingdb
node_graceworker -->|"creates event"| node_graceevent
node_graceworker -->|"publishes event"| node_eventbus
node_eventbus -->|"dispatches events"| node_eventhandler
node_eventlog -.->|"persists event records"| node_orderingdb
node_payment -.->|"event integration"| node_eventbus

click node_webapp "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebApp/Program.cs"
click node_catalogclient "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebAppComponents/Services/CatalogService.cs"
click node_basketclient "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebApp/Services/BasketService.cs"
click node_catalogapi "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Apis/CatalogApi.cs"
click node_catalogai "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Services/CatalogAI.cs"
click node_catalogdb "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Infrastructure/CatalogContext.cs"
click node_basketapi "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Basket.API/Basket.API/Grpc/BasketService.cs"
click node_basketstore "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Basket.API/Basket.API/Repositories/RedisBasketRepository.cs"
click node_identityui "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Quickstart/Account/AccountController.cs"
click node_identityserver "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Program.cs"
click node_identityuser "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Models/ApplicationUser.cs"
click node_identityconfig "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Configuration/Config.cs"
click node_identitydb "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Data/ApplicationDbContext.cs"
click node_ordersapi "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Apis/OrdersApi.cs"
click node_ordercommands "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs"
click node_buyerhandler "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Application/DomainEventHandlers/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs"
click node_buyer "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs"
click node_orderingdb "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Infrastructure/OrderingContext.cs"
click node_requestmanager "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Infrastructure/Idempotency/RequestManager.cs"
click node_payment "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.PaymentProcessor/PaymentProcessor/Program.cs"
click node_graceworker "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs"
click node_eventbus "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs"
click node_eventhandler "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.EventBus/EventBus/Abstractions/IIntegrationEventHandler.cs"
click node_eventlog "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.IntegrationEventLogEF/IntegrationEventLogEF/Services/IntegrationEventLogService.cs"
click node_graceevent "https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.OrderProcessor/OrderProcessor/Events/GracePeriodConfirmedIntegrationEvent.cs"

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_webapp,node_catalogclient,node_basketclient toneBlue
class node_identityui,node_identityserver,node_identityuser,node_identityconfig,node_identitydb toneAmber
class node_catalogapi,node_catalogai,node_catalogdb,node_basketapi,node_basketstore,node_ordersapi,node_ordercommands,node_buyerhandler,node_buyer,node_orderingdb,node_requestmanager,node_payment,node_graceworker toneMint
class node_eventbus,node_eventhandler,node_eventlog,node_graceevent toneRose
class node_shopper toneIndigo
```

## Components

### Storefront

- [Web application](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebApp/Program.cs): `src/microservices/eShop.WebApp/WebApp/Program.cs`
- [Catalog client](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebAppComponents/Services/CatalogService.cs): `src/microservices/eShop.WebApp/WebAppComponents/Services/CatalogService.cs`
- [Basket client](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.WebApp/WebApp/Services/BasketService.cs): `src/microservices/eShop.WebApp/WebApp/Services/BasketService.cs`

### Identity

- [Account UI](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Quickstart/Account/AccountController.cs): `src/microservices/eShop.Identity.API/Identity.API/Quickstart/Account/AccountController.cs`
- [Identity server](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Program.cs): `src/microservices/eShop.Identity.API/Identity.API/Program.cs`
- [User profile](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Models/ApplicationUser.cs): `src/microservices/eShop.Identity.API/Identity.API/Models/ApplicationUser.cs`
- [OIDC configuration](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Configuration/Config.cs): `src/microservices/eShop.Identity.API/Identity.API/Configuration/Config.cs`
- [Identity database](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Identity.API/Identity.API/Data/ApplicationDbContext.cs): `src/microservices/eShop.Identity.API/Identity.API/Data/ApplicationDbContext.cs`

### Commerce services

- [Catalog API](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Apis/CatalogApi.cs): `src/microservices/eShop.Catalog.API/Catalog.API/Apis/CatalogApi.cs`
- [Catalog AI](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Services/CatalogAI.cs): `src/microservices/eShop.Catalog.API/Catalog.API/Services/CatalogAI.cs`
- [Catalog database](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Catalog.API/Catalog.API/Infrastructure/CatalogContext.cs): `src/microservices/eShop.Catalog.API/Catalog.API/Infrastructure/CatalogContext.cs`
- [Basket gRPC](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Basket.API/Basket.API/Grpc/BasketService.cs): `src/microservices/eShop.Basket.API/Basket.API/Grpc/BasketService.cs`
- [Redis basket store](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Basket.API/Basket.API/Repositories/RedisBasketRepository.cs): `src/microservices/eShop.Basket.API/Basket.API/Repositories/RedisBasketRepository.cs`
- [Orders API](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Apis/OrdersApi.cs): `src/microservices/eShop.Ordering.API/Ordering.API/Apis/OrdersApi.cs`
- [Order commands](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs): `src/microservices/eShop.Ordering.API/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs`
- [Buyer validation](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.API/Application/DomainEventHandlers/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs): `src/microservices/eShop.Ordering.API/Ordering.API/Application/DomainEventHandlers/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs`
- [Buyer aggregate](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs): `src/microservices/eShop.Ordering.API/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs`
- [Ordering database](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Infrastructure/OrderingContext.cs): `src/microservices/eShop.Ordering.API/Ordering.Infrastructure/OrderingContext.cs`
- [Request idempotency](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.Ordering.API/Ordering.Infrastructure/Idempotency/RequestManager.cs): `src/microservices/eShop.Ordering.API/Ordering.Infrastructure/Idempotency/RequestManager.cs`
- [Payment processor](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.PaymentProcessor/PaymentProcessor/Program.cs): `src/microservices/eShop.PaymentProcessor/PaymentProcessor/Program.cs`
- [Grace-period worker](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs): `src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs`

### Messaging

- [RabbitMQ event bus](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs): `src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs`
- [Event handlers](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.EventBus/EventBus/Abstractions/IIntegrationEventHandler.cs): `src/project_packages/eShop.EventBus/EventBus/Abstractions/IIntegrationEventHandler.cs`
- [Event log](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/project_packages/eShop.IntegrationEventLogEF/IntegrationEventLogEF/Services/IntegrationEventLogService.cs): `src/project_packages/eShop.IntegrationEventLogEF/IntegrationEventLogEF/Services/IntegrationEventLogService.cs`
- [Grace confirmation event](https://github.com/tokihab/automated-e-commerce-deployment-platform/blob/main/src/microservices/eShop.OrderProcessor/OrderProcessor/Events/GracePeriodConfirmedIntegrationEvent.cs): `src/microservices/eShop.OrderProcessor/OrderProcessor/Events/GracePeriodConfirmedIntegrationEvent.cs`

### Other components

- **Shopper**

## Connections

- Shopper → Web application: uses
- Web application → Catalog client: offers catalog
- Web application → Basket client: offers basket
- Catalog client → Catalog API: requests products
- Catalog API → Catalog database: reads catalog
- Catalog API → Catalog AI: AI capability
- Basket client → Basket gRPC: calls gRPC
- Basket gRPC → Redis basket store: reads and writes
- Shopper → Account UI: signs in
- Account UI → User profile: authenticates user (evidence: `src/microservices/eShop.Identity.API/Identity.API/Quickstart/Account/AccountController.cs`)
- Identity server → OIDC configuration: loads clients (evidence: `src/microservices/eShop.Identity.API/Identity.API/Program.cs`)
- Identity server → User profile: configures identity (evidence: `src/microservices/eShop.Identity.API/Identity.API/Program.cs`)
- Identity server → Identity database: stores identity (evidence: `src/microservices/eShop.Identity.API/Identity.API/Program.cs`)
- Shopper → Orders API: submits order
- Orders API → Order commands: dispatches command
- Buyer validation → Buyer aggregate: creates or verifies (evidence: `src/microservices/eShop.Ordering.API/Ordering.API/Application/DomainEventHandlers/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs`)
- Buyer validation → RabbitMQ event bus: publishes status event
- Request idempotency → Ordering database: checks and saves (evidence: `src/microservices/eShop.Ordering.API/Ordering.Infrastructure/Idempotency/RequestManager.cs`)
- Grace-period worker → Ordering database: queries submitted orders (evidence: `src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs`)
- Grace-period worker → Grace confirmation event: creates event (evidence: `src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs`)
- Grace-period worker → RabbitMQ event bus: publishes event (evidence: `src/microservices/eShop.OrderProcessor/OrderProcessor/Services/GracePeriodManagerService.cs`)
- RabbitMQ event bus → Event handlers: dispatches events (evidence: `src/project_packages/eShop.EventBusRabbitMQ/EventBusRabbitMQ/RabbitMQEventBus.cs`)
- Event log → Ordering database: persists event records
- Payment processor → RabbitMQ event bus: event integration
