eShop README

The project's README from github.com/dotnet/eShop. As one markdown file: README.md.

eShop Reference Application - "AdventureWorks"

A reference .NET application implementing an e-commerce website using a services-based architecture with Aspire.

eShop Reference Application architecture diagram

eShop homepage screenshot

Getting Started

This version of eShop is based on .NET 10.

Previous eShop versions:

Prerequisites

  1. Install a .NET 10 SDK that satisfies global.json.

  2. Install the Aspire CLI and verify that it is available:

    aspire --version
    
  3. Install and start an OCI-compatible container runtime. Docker Desktop is the recommended default. Podman is also supported; follow the Aspire prerequisites to configure it.

  4. Clone the repository:

    git clone https://github.com/dotnet/eShop.git
    cd eShop
    

No separate Aspire workload or Visual Studio component is required; the AppHost SDK and hosting integrations are referenced by the projects in this repository.

Optional IDE setup

Running the solution

[!WARNING] Ensure that your container runtime is running before starting eShop.

From the terminal

From the repository root, run:

aspire run

The root aspire.config.json selects src/eShop.AppHost/eShop.AppHost.csproj, avoiding ambiguity with the test AppHosts in the repository. When startup completes, the CLI prints a dashboard URL similar to:

Dashboard: https://localhost:<port>/login?t=<token>

Press Ctrl+C to stop the AppHost. See the aspire run command for additional options.

To run the AppHost in the background instead:

aspire start
aspire ps

When you are finished, run aspire stop. See the aspire start command for details.

From Visual Studio

  1. Open eShop.Web.slnf.
  2. Set src/eShop.AppHost/eShop.AppHost.csproj as the startup project.
  3. Press Ctrl+F5 to start eShop and open the Aspire dashboard.

Running tests

Run the server tests:

dotnet test --solution eShop.Web.slnf

Run the Playwright browser journeys. Playwright starts the AppHost automatically, so ensure your container runtime is running first.

npm ci
npx playwright install chromium
npm run test:e2e

Optional: AI Chatbot with Microsoft Foundry

This option provisions a Microsoft Foundry resource during local development, so first authenticate to Azure and configure the subscription and location:

az login
aspire secret set "Azure:SubscriptionId" "<subscription-id>"
aspire secret set "Azure:Location" "eastus"

Then enable Foundry and start eShop:

$env:UseFoundry = "true"
aspire run

Aspire provisions the gpt-4.1-mini and text-embedding-3-small deployments and injects their connection information into the consuming projects. The Foundry hosting integration currently uses a preview package. See local Azure provisioning and the Microsoft Foundry hosting integration for details.

Deploy to Azure Container Apps

The AppHost is already configured with an Azure Container Apps environment, so the Aspire CLI can deploy directly from the application model. See the Aspire Azure Container Apps deployment guide for details.

[!WARNING] This sample deploys PostgreSQL, Redis, and RabbitMQ as containers in Azure Container Apps. This configuration is intended for evaluation and demonstrations, not production data.

Prerequisites:

Sign in, optionally preview the deployment pipeline, and deploy:

az login
aspire deploy --list-steps
aspire deploy

For local interactive use, aspire deploy prompts for missing Azure settings. For non-interactive use, provide them explicitly:

$env:Azure__SubscriptionId = "<subscription-id>"
$env:Azure__Location = "eastus"
$env:Azure__ResourceGroup = "rg-eshop-demo"
aspire deploy --non-interactive

Use aspire publish when you need deployment artifacts for inspection or another deployment tool. Running it first is not required: aspire deploy invokes the deployment pipeline and its dependencies directly rather than consuming an earlier publish output.

When you no longer need the deployment, run aspire destroy. This deletes the entire configured resource group, including resources that Aspire did not create, so review the target carefully before confirming.

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.

eShop on Azure

For a version of this app configured for deployment on Azure, please view the eShop on Azure repo.

eShop (dotnet/eShop)

Searching Database…

11K ·GitHub
What is this?A reference .NET application implementing an e-commerce website ('AdventureWorks') using a services-based microservices architecture built on .NET Aspire.
Is this a library I import, or a full app I run?It is a complete multi-service sample application, not a package you import - you run the whole AppHost to launch all the eCommerce microservices together.
How do I get it running?Clone the repo, make sure a container runtime is started, then run the Aspire CLI from the repo root (or open eShop.Web.slnf in Visual Studio and press Ctrl+F5) to launch the AppHost and open the Aspire dashboard.
What do I need installed before running it?A .NET 10 SDK matching global.json, the Aspire CLI, and an OCI-compatible container runtime (Docker Desktop recommended, Podman also supported) are required first.
Any pitfalls when deploying this to the cloud?Deploying to Azure Container Apps spins up PostgreSQL, Redis, and RabbitMQ as live containers, which the README explicitly says is meant only for evaluation and demos, not production data.
What's the optional AI chatbot feature about?eShop can optionally provision a Microsoft Foundry resource during local development to add an AI chatbot, using the gpt-4.1-mini and text-embedding-3-small models that Aspire injects automatically into the app.
Is the product catalog data real?No, the product names, descriptions, brand names, and images in catalog.json are fictional, generated with GPT-3.5-Turbo and DALL-E 3.
Can I deploy eShop to Azure directly from here?Yes, the AppHost already has an Azure Container Apps environment configured, so running 'aspire deploy' provisions and deploys it straight from the application model.
Is there a version meant for production Azure deployment?The project points to a separate 'eShop on Azure' repo that is specifically configured for that purpose, since this version's Azure deployment is only for demos.
Creator
dotnet
Size
26.8 MB
Stars
11K
Age
2y
Commits · 90 Days