This is a practical and imaginary eCommerce backend system built with
.NET 8
. The system is designed usingMonolith Architecture
,Vertical Slice Architecture
, andClean Architecture
principles. The goal is to demonstrate a scalable, maintainable, and testable approach for building modern eCommerce applications.
-
.NET 8
- The latest stable version of .NET for building high-performance applications. -
MVC Versioning API
- Set of libraries which add service API versioning to ASP.NET Web API, OData with ASP.NET Web API, and ASP.NET Core. -
EF Core
- Modern object-relational mapper for .NET that enables LINQ queries, change tracking, updates, and database schema migrations. -
AspNetCore OpenApi
- Provides built-in support for OpenAPI document generation in ASP.NET Core. -
MediatR
- About Simple, unambitious mediator implementation in .NET -
FluentValidation
- Popular .NET validation library for building strongly-typed validation rules. -
Swagger UI
- Swagger tools for documenting API's built on ASP.NET Core. -
Serilog
- Simple .NET logging with fully-structured events -
Polly
- Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. -
Scrutor
- Assembly scanning and decoration extensions for Microsoft.Extensions.DependencyInjection -
EasyCaching
- Open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier. -
Mapperly
- A .NET source generator for generating object mappings. No runtime reflection. -
NSubstitute
- A friendly substitute for .NET mocking libraries. -
xUnit
- A free, open source, community-focused unit testing tool for the .NET Framework. -
Bogus
- A simple fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js. -
Testcontainers
- Testcontainers for .NET is a library to support tests with throwaway instances of Docker containers.
To get started with this project, you need to have the following installed:
Clone the repository:
git clone https://github.com/tguankheng016/dotnet-commerce-monolith.git
Run the development server:
cd src/CommerceMono.Api
dotnet run