BookStore is a .NET 10 application built to showcase modern development practices, utilizing a Modular Monolith with Vertical Slice Architecture, Minimal APIs, and .NET Aspire for cloud-native orchestration. It is designed with a strong focus on boundary isolation, testability, and clean code to deliver a clean, robust, and well-tested codebase. This project is continuously evolving, with new modules and features being actively built.
- Backend: .NET 10, ASP.NET Core Minimal APIs, Entity Framework Core 10
- Frontend: Blazor WebAssembly
- Orchestration: .NET Aspire, OpenTelemetry, Azure Blob Storage (Azurite)
- Database: MS SQL Server
- Testing: xUnit v3, FluentAssertions, NSubstitute, Testcontainers
The system uses a Modular Monolith approach, with Vertical Slice Architecture applied internally within modules.
graph TD
UI[BookStore.UI - Blazor WASM] -->|HTTP / Minimal APIs| Api[BookStore.ApiHost]
subgraph Aspire Orchestration
Host[BookStore.AppHost] -.->|Orchestrates| Api
Host -.->|Orchestrates| Db[(MS SQL Server)]
Host -.->|Orchestrates| Storage[(Azure Blob Storage)]
end
subgraph Modular Boundaries
Api -->|Endpoints| Catalog[Catalog Module]
Catalog -->|Boundary Capsule| CatalogContracts[Catalog.Contracts]
subgraph Catalog Module Internal Slices
GetDetails[GetBookDetails Feature]
Search[SearchBooks Feature]
Filters[GetSearchFilters Feature]
end
end
- Isolated Boundaries: Modules communicate strictly through
Contracts. Implementation details remaininternalwithin module assemblies to prevent tight coupling. - Vertical Slices: Features (e.g., endpoints, handlers, validators) are grouped together by capability rather than horizontal layers.
- Quality Assurance: Covered by isolated unit tests and full integration tests using containerized databases to verify real-world behavior.
├── .aspire/ # Aspire orchestration assets
├── src/
│ ├── Hosts/ # API, Blazor UI, Aspire AppHost
│ ├── Modules/ # Core modules (e.g., Catalog)
│ └── Shared/ # Shared configurations and utilities
└── tests/ # Unit and integration tests
To run the multi-service application locally:
- Ensure .NET 10 SDK and Docker Desktop are installed.
- Clone the repository.
- Run the AppHost:
dotnet run --project src/Hosts/BookStore.AppHost
- Open the .NET Aspire Dashboard URL provided in the console to monitor the services, logs, and traces.
Feel free to reach out to discuss modern .NET architecture, software engineering, or potential opportunities.
- 💼 LinkedIn: Peter Kovecses
- ⭐ Give it a Star: If you like what you see, please star this repository—it helps!