Skip to content

Latest commit

 

History

201 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛍️ eShop — A .NET Aspire Microservices Platform

eShop Pull Request Validation CodeQL

📜 View the portfolio page →

Last updated: August 20, 2026 (3 of 20 projects done — EventBus, EventBusRabbitMQ, eShop.ServiceDefaults, plus SharedIntegrationEventLogEF 5/7 source files in progress; 66/66 tests passing)

This is an independently modernized version of Microsoft's dotnet/eShop reference app — a .NET Aspire microservices e-commerce platform (product catalog, basket, ordering, identity, payments, outbound webhooks) added one file at a time, each file evaluated and upgraded against actual current-latest package versions rather than copied over wholesale.

Not a fork left as-is. Every package version was individually re-researched, several real bugs were found and fixed in Microsoft's own reference source (verified against real assemblies and real builds, not assumed), and a handful of deliberate design departures — a Decorator split for EventBusRabbitMQ, React instead of Blazor for the web frontend — were made and recorded as this fork's own choices.

At a glance: 66/66 tests passing across eShop.ServiceDefaults.UnitTests + EventBus.UnitTests + EventBusRabbitMQ.UnitTests, added ahead of the tests/ migration slot so every completed project ships with full coverage rather than deferring it to the end — see the Testing Strategy diagram.

🧭 Start Here

  • System Architecture — the 20-project target layout, four layers, and exactly what's real today
  • Event Flow — the EventBus/EventBusRabbitMQ Decorator chain, and the two real bugs found while building it
  • Projects Reference — every project, its real one-line role, and its status
  • Testing Strategy — the patterns behind 66 passing tests, and the fix a Decorator split finally let get proven end-to-end

The wiki goes deeper per completed piece of work, each page linking back to the real source rather than repeating it.

  • todo.md — the evidence-backed log of everything done and everything still open, with commit hashes. This is the source of truth for progress.
  • GitHub Project board — a Scrum-style Backlog/Planned/In Progress/Verification & QA/Done view of the same work. Kept in sync with todo.md.
  • docs/architecturedesign.md — the reasoning behind this repo's architectural decisions, verified against the real source app rather than described generically.
  • portfolio.html — this repo as a portfolio piece: real bugs found, real design decisions made, and why, for anyone scanning it rather than reading it as documentation.
  • CONTRIBUTING.md — development setup and contribution principles.

🧭 Why This Matters

.NET Aspire microservices, event-driven integration through a message bus, and a transactional outbox pattern show up constantly on resumes and rarely get built end-to-end with the reasoning behind each decision written down. dotnet/eShop is Microsoft's own teaching reference for exactly this shape — a genuinely useful thing to rebuild file by file rather than fork wholesale, since it means every package version gets re-verified, every file gets read closely enough to catch what's actually wrong with it, and every design choice that diverges from upstream is a deliberate call, not an oversight.

🏗 What's Here So Far

Shared (linked-source utilities), EventBus (transport-agnostic event abstractions), EventBusRabbitMQ (the RabbitMQ implementation, split into a 3-layer Decorator chain after two real bugs turned up in the original single-class version), and eShop.ServiceDefaults (Aspire telemetry/health-check/resilience defaults) are complete, reviewed, and fully tested. IntegrationEventLogEF — the EF Core-backed transactional outbox every event-publishing service will write through — is in progress at 5 of 7 source files. The other 16 projects don't exist on disk yet. See todo.md for the full build-out plan and the honest current state.

  Shared/                 linked-source utilities                          ✅ done
  EventBus/                transport-agnostic event abstractions            ✅ done
  EventBusRabbitMQ/        RabbitMQ implementation, 3-layer Decorator       ✅ done
  eShop.ServiceDefaults/   Aspire telemetry/health-check/resilience         ✅ done
  IntegrationEventLogEF/  EF Core transactional outbox                     🚧 5 of 7 files
  Identity.API/            Duende IdentityServer (OIDC)                     ⬜ not started
  Catalog.API/             product catalog                                 ⬜ not started
  Basket.API/              Redis-backed cart (gRPC)                        ⬜ not started
  Ordering.Domain/.Infrastructure/.API/  order placement (DDD split)        ⬜ not started
  OrderProcessor/          background worker                               ⬜ not started
  PaymentProcessor/        background worker                               ⬜ not started
  Webhooks.API/            outbound webhook notifications                  ⬜ not started
  WebApp/                  React storefront (not Blazor — see below)       ⬜ not started
  WebBFF/                  Backend-for-Frontend, Duende.BFF (new)          ⬜ not started
  ClientApp/               native .NET MAUI                                ⬜ not started
  eShop.AppHost/           Aspire orchestrator, added last                 ⬜ not started

🖥 Getting Started

Not runnable end-to-end yeteShop.AppHost (the Aspire orchestrator every service registers with) is deliberately the last project added, since it can't meaningfully exist until the things it orchestrates do. See todo.md for the honest current state. What follows is prerequisite setup, useful today regardless of how much of the app exists.

Windows with Visual Studio

Install Visual Studio 2022 version 17.10 or newer with the ASP.NET and web development workload and the .NET Aspire SDK component (Individual components) — or run the WinGet configuration script:

install-Module -Name Microsoft.WinGet.Configuration -AllowPrerelease -AcceptLicense -Force
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
get-WinGetConfiguration -file .\.config\configuration.vs.winget | Invoke-WinGetConfiguration -AcceptConfigurationAgreements

Mac, Linux, and Windows without Visual Studio

Visual Studio Code with C# Dev Kit is recommended — see .vscode/extensions.json for the exact set this repo uses. Or run the equivalent WinGet configuration script on Windows:

install-Module -Name Microsoft.WinGet.Configuration -AllowPrerelease -AcceptLicense -Force
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
get-WinGetConfiguration -file .\.config\configuration.vsCode.winget | Invoke-WinGetConfiguration -AcceptConfigurationAgreements

On Mac with Apple Silicon, Rosetta 2 is needed for grpc-tools.

Building what exists today

dotnet build eShop.Web.slnf

eShop.slnx/eShop.Web.slnf only ever list projects that actually exist on disk, so this builds cleanly against the 4 done + 1 in-progress projects above without failing on anything not yet added.

Contributing

For more information on contributing to this repo, read the contribution documentation and the Code of Conduct.

Sample data

The sample catalog data is defined in catalog.json. Those product names, descriptions, and brand names are fictional and were generated using GPT-35-Turbo, and the corresponding product images were generated using DALL·E 3.

Acknowledgment

Built from Microsoft's dotnet/eShop reference application. For the original, upstream-maintained version — including Azure OpenAI integration and Azure Developer CLI deployment, both out of scope until this fork is runnable end-to-end — see the source repo directly.

About

Independently modernized .NET Aspire microservices e-commerce app, added one file at a time from Microsoft's dotnet/eShop -- each file evaluated and upgraded, not copied wholesale. .NET 10, Aspire 13. 3 of 20 projects done and fully tested (66 passing tests), IntegrationEventLogEF in progress.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages