https://github.com/taidangduc/eshop
Practical Monolith, built with .Net 9, Clean Architecture, CQRS and the latest technologies.
https://github.com/taidangduc/eshop
asp-net-core clean-architechture csharp dotnet dotnet-api dotnet-mvc identityserver4 monolith oauth2 reactjs testing
Last synced: about 5 hours ago
JSON representation
Practical Monolith, built with .Net 9, Clean Architecture, CQRS and the latest technologies.
- Host: GitHub
- URL: https://github.com/taidangduc/eshop
- Owner: taidangduc
- License: mit
- Created: 2025-04-07T14:56:29.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-04-23T11:33:34.000Z (5 days ago)
- Last Synced: 2026-04-23T13:28:21.230Z (5 days ago)
- Topics: asp-net-core, clean-architechture, csharp, dotnet, dotnet-api, dotnet-mvc, identityserver4, monolith, oauth2, reactjs, testing
- Language: C#
- Homepage:
- Size: 31.2 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eshop
> ποΈ A practical e-commerce application built with .NET for the backend and React (Vite) for the frontend, demonstrating clean architecture and the latest technologies.
## Purpose
Provide a sample production-ready foundation for an online store with clean architecture and domain-driven design.
## Key Features
- HTTP APIs for Basket, Catalog, Customer, Identity, Order, and Payment.
- Aspire used to local orchestration.
- Domainβdriven design: entities, value objects, and domain events.
- Seperate commands, queries in per feature.
- JWT authentication and Cookie authentication
- Unit and integration test projects.
## Goals of This Project
- βοΈ Using `Clean Architecture` for architecture level.
- βοΈ Using `CQRS` implementation with `MediatR` library.
- βοΈ Using `Fluent Validation` and a `Validation Pipeline Behaviour` on top of `MediatR`.
- βοΈ Using `Unit Testing` for testing small units and mocking
- βοΈ Using `Docker` for containerization
- βοΈ Using `Nginx` for reserve proxy
- βοΈ Using `Aspire` for local development, fast test
- βοΈ Integration payment gateway with a `Stripe`
- βοΈ Identity and authentication via `Duende IdentityServer`.
- βοΈ Using storage: local filesystem and `Azure Blob` provider.
- βοΈ Observability via `OpenTelemetry` (instrumentation + exporters).
- βοΈ Email notifications via SMTP and background host services.
- βοΈ In-memory caching
## Technologies - Libraries
- βοΈ `.NET 9` β runtime and SDK used across services.
- βοΈ `Entity Framework Core` β persistence, migrations, etc
- βοΈ `MediatR` β CQRS and in-process messaging (handlers + pipeline behaviors).
- βοΈ `FluentValidation` β command validators and validation pipeline integration.
- βοΈ `Duende.IdentityServer` β Identity and authentication.
- βοΈ `OpenTelemetry` β tracing and metrics instrumentation.
- βοΈ `Stripe` β payment provider implementation and factory-based payment gateway.
- βοΈ `Azure Blob Storage` and local file storage managers.
- βοΈ `Swashbuckle / OpenAPI` (Swagger) β API documentation and UI.
- βοΈ `React` + `Vite` β storefront frontend.
- βοΈ `xUnit.net` β unit and integration testing projects.
- βοΈ `Docker`, `Nginx` β containerized dev/production setups and reverse proxy.
- βοΈ `Aspire` β local orchestration for multi-service development.
- βοΈ `Microsoft.Extensions.Caching.Memory` β in-memory caching support.
## Demo
#### Identity Server