eshop-full — projects reference

Twenty-one projects, one migration order: foundation, then domain, then workers, then frontends, then orchestration.

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.

done in progress not started

Foundation — everything else depends on these

Done

Shared

Linked-source utilities, not a .csproj — compiled directly into consuming projects.

Done

EventBus

Transport-agnostic abstractions for publishing/consuming integration events.

Done

EventBusRabbitMQ

The only IEventBus implementation today — a 3-layer Decorator chain over RabbitMQ.

Done

eShop.ServiceDefaults

Aspire telemetry/health-check/resilience defaults, shared by every service via AddServiceDefaults().

Done

IntegrationEventLogEF

EF Core-backed transactional outbox — all 7 source files reviewed, several real fixes.

Domain APIs

In progress

Identity.API

Duende IdentityServer — the OIDC provider for the whole system.

Flag when reached: verify Duende 7.x→8.x breaking changes, and that ValidateAudience = true validates cleanly against real issued tokens.
Not started

Catalog.API

Product catalog — read-heavy, scales independently of everything else.

Not started

Basket.API

Redis-backed ephemeral cart state — gRPC service contract.

Flag when reached: add Grpc.AspNetCore.Web middleware so the same service serves gRPC-Web for WebApp/WebBFF.
Not started

Ordering.Domain

Domain model — the "D" in a domain-driven design split across three projects.

Not started

Ordering.Infrastructure

EF Core persistence for the order aggregate.

Not started

Ordering.API

The order-placement API surface — transactional consistency requirements, unlike Catalog/Basket.

Flag when reached: verify MediatR 12.5.0 (pinned below source's 13.0.0 for licensing) compiles clean.
Not started

Webhooks.API

Outbound webhook notifications for third-party integrations — Observer pattern over HTTP.

Background workers — no HTTP surface

Not started

OrderProcessor

Queue-driven background worker reacting to order-lifecycle events.

Not started

PaymentProcessor

Queue-driven background worker, payment-side of the order lifecycle.

Not started

WebhookClient

Sample app demonstrating consuming Webhooks.API's outbound notifications.

Frontends & orchestration

Not started

WebApp

React storefront — deliberately not Blazor (upstream's choice). See Event Flow's judgment-call context.

Not started

WebBFF

New project, not in upstream — Backend-for-Frontend using Duende.BFF, keeps OAuth tokens server-side instead of in browser JS.

Not started

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.

Not started

ClientApp

Native .NET MAUI mobile client — unaffected by the React pivot.

Not started

eShop.AppHost

The Aspire orchestrator — references every other project, so it's deliberately added last.

i

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.