eshop-full — projects reference
Every project below, in the order it's actually being built — not upstream's original list order.
eShop.slnx/eShop.Web.slnf only ever list what exists on disk today, so
dotnet build and CI never try to build a project that isn't real yet. See
System Architecture for the same information as a layer
diagram, and todo.md's "Still to do" table for the live flat list.
Shared
Linked-source utilities, not a .csproj — compiled directly into consuming projects.
EventBus
Transport-agnostic abstractions for publishing/consuming integration events.
EventBusRabbitMQ
The only IEventBus implementation today — a 3-layer Decorator chain over RabbitMQ.
eShop.ServiceDefaults
Aspire telemetry/health-check/resilience defaults, shared by every service via AddServiceDefaults().
IntegrationEventLogEF
EF Core-backed transactional outbox — all 7 source files reviewed, several real fixes.
Identity.API
Duende IdentityServer — the OIDC provider for the whole system.
ValidateAudience = true validates cleanly against real issued tokens.Catalog.API
Product catalog — read-heavy, scales independently of everything else.
Basket.API
Redis-backed ephemeral cart state — gRPC service contract.
Grpc.AspNetCore.Web middleware so the same service serves gRPC-Web for WebApp/WebBFF.Ordering.Domain
Domain model — the "D" in a domain-driven design split across three projects.
Ordering.Infrastructure
EF Core persistence for the order aggregate.
Ordering.API
The order-placement API surface — transactional consistency requirements, unlike Catalog/Basket.
Webhooks.API
Outbound webhook notifications for third-party integrations — Observer pattern over HTTP.
OrderProcessor
Queue-driven background worker reacting to order-lifecycle events.
PaymentProcessor
Queue-driven background worker, payment-side of the order lifecycle.
WebhookClient
Sample app demonstrating consuming Webhooks.API's outbound notifications.
WebApp
React storefront — deliberately not Blazor (upstream's choice). See Event Flow's judgment-call context.
WebBFF
New project, not in upstream — Backend-for-Frontend using Duende.BFF, keeps OAuth tokens server-side instead of in browser JS.
Identity.WebApp
New project, not in upstream (working name) — React replacement for Duende's Quickstart Razor UI (Account/Consent/Device/Diagnostics/Grants), hosted separately from Identity.API.
ClientApp
Native .NET MAUI mobile client — unaffected by the React pivot.
eShop.AppHost
The Aspire orchestrator — references every other project, so it's deliberately added last.
tests/ (5 projects, framework already decided) and build/ tooling are the
last two rows in todo.md's flat list — but testing itself isn't deferred: every project
above marked Done already has full test coverage added in the same unit of work as
its source files. See Testing Strategy.