graph LR
Client_Applications["Client Applications"]
API_Gateway_BFF_["API Gateway (BFF)"]
Catalog_Service["Catalog Service"]
Basket_Service["Basket Service"]
Identity_Service["Identity Service"]
Ordering_Service["Ordering Service"]
Order_Fulfillment_Services["Order Fulfillment Services"]
Eventing_Infrastructure["Eventing Infrastructure"]
Webhook_Service["Webhook Service"]
Application_Host["Application Host"]
Client_Applications -- "sends user requests to" --> API_Gateway_BFF_
Client_Applications -- "authenticates with" --> Identity_Service
API_Gateway_BFF_ -- "receives requests from" --> Client_Applications
API_Gateway_BFF_ -- "requests product data from" --> Catalog_Service
API_Gateway_BFF_ -- "sends basket requests to" --> Basket_Service
API_Gateway_BFF_ -- "sends order requests to" --> Ordering_Service
API_Gateway_BFF_ -- "interacts with for authentication" --> Identity_Service
Catalog_Service -- "provides product data to" --> API_Gateway_BFF_
Catalog_Service -- "publishes product events to" --> Eventing_Infrastructure
Basket_Service -- "manages basket data for" --> API_Gateway_BFF_
Basket_Service -- "publishes basket events to" --> Eventing_Infrastructure
Identity_Service -- "provides authentication to" --> API_Gateway_BFF_
Identity_Service -- "authenticates" --> Client_Applications
Ordering_Service -- "manages orders for" --> API_Gateway_BFF_
Ordering_Service -- "communicates order events via" --> Eventing_Infrastructure
Order_Fulfillment_Services -- "processes order events from" --> Eventing_Infrastructure
Order_Fulfillment_Services -- "publishes fulfillment events to" --> Eventing_Infrastructure
Eventing_Infrastructure -- "provides eventing to" --> Ordering_Service
Eventing_Infrastructure -- "provides eventing to" --> Order_Fulfillment_Services
Webhook_Service -- "subscribes to events from" --> Eventing_Infrastructure
Application_Host -- "orchestrates deployment of" --> API_Gateway_BFF_
Application_Host -- "orchestrates deployment of" --> Ordering_Service
click Client_Applications href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Client_Applications.md" "Details"
click API_Gateway_BFF_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/API_Gateway_BFF_.md" "Details"
click Catalog_Service href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Catalog_Service.md" "Details"
click Basket_Service href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Basket_Service.md" "Details"
click Identity_Service href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Identity_Service.md" "Details"
click Ordering_Service href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Ordering_Service.md" "Details"
click Order_Fulfillment_Services href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Order_Fulfillment_Services.md" "Details"
click Eventing_Infrastructure href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main//eShop/Eventing_Infrastructure.md" "Details"
This analysis consolidates the insights from the Control Flow Graph (CFG) and Source Code analysis to present a high-level overview of the eShop architecture. The system is designed as a microservices-based application, orchestrated by an Application Host, and communicating primarily through an Eventing Infrastructure.
The user-facing applications (mobile, web, and hybrid) that allow users to browse products, manage their shopping baskets, place orders, and view order history. They serve as the primary interface for end-users.
Related Classes/Methods:
src/ClientApp/MauiProgram.cs(1:1)src/WebApp/Program.cs(1:1)src/HybridApp/MauiProgram.cs(1:1)
A Backend for Frontend (BFF) service that acts as an aggregation layer and API gateway. It simplifies interactions for client applications by consolidating requests to various backend microservices and transforming data as needed.
Related Classes/Methods:
src/Mobile.Bff.Shopping/Program.cs(1:1)
Manages all product-related information, including product items, brands, and types. It provides APIs for browsing the product catalog and handles updates to product details.
Related Classes/Methods:
src/Catalog.API/Apis/CatalogApi.cs(1:1)src/Catalog.API/Model/CatalogItem.cs(1:1)
Manages user shopping baskets, allowing users to add, remove, and update items in their basket before proceeding to checkout. It persists basket data, typically in a fast-access store like Redis.
Related Classes/Methods:
src/Basket.API/Grpc/BasketService.cs(1:1)src/Basket.API/Model/CustomerBasket.cs(1:1)
Handles user authentication, authorization, and user management. It uses IdentityServer4 to provide secure token-based authentication for all other services and client applications.
Related Classes/Methods:
src/Identity.API/Quickstart/Account/AccountController.cs(1:1)src/Identity.API/Data/ApplicationDbContext.cs(1:1)
Manages the complete lifecycle of customer orders, from creation and validation to payment processing and stock confirmation. It encapsulates the core business logic for order management.
Related Classes/Methods:
src/Ordering.API/Apis/OrdersApi.cs(1:1)src/Ordering.Domain/AggregatesModel/OrderAggregate/Order.cs(1:1)
Comprises services responsible for processing payments and handling background tasks related to order fulfillment, such as managing grace periods for orders and confirming stock availability.
Related Classes/Methods:
src/PaymentProcessor/Program.cs(1:1)src/OrderProcessor/Services/GracePeriodManagerService.cs(1:1)
Provides a robust mechanism for asynchronous communication between microservices using integration events. It includes an abstraction layer, a RabbitMQ implementation, and an integration event log for reliable event publishing.
Related Classes/Methods:
src/EventBus/Abstractions/IEventBus.cs(1:1)src/EventBusRabbitMQ/RabbitMQEventBus.cs(1:1)src/IntegrationEventLogEF/Services/IntegrationEventLogService.cs(1:1)
Manages subscriptions for webhooks and dispatches integration events to registered external webhook clients, enabling external systems to react to events within the eShop ecosystem.
Related Classes/Methods:
src/Webhooks.API/Apis/WebHooksApi.cs(1:1)src/Webhooks.API/Services/WebhooksSender.cs(1:1)
The central entry point and orchestrator for the entire eShop solution. It manages the deployment, configuration, and execution of all microservices and client applications.
Related Classes/Methods:
src/eShop.AppHost/Program.cs(1:1)