A microservices-based Warehouse Management System (WMS) built with .NET 10, MassTransit, and RabbitMQ. The system demonstrates enterprise integration patterns for processing orders through multiple stages: order creation, inventory checking, picking, and packing.
| Project | Description |
|---|---|
| OrderApi | REST API gateway for order submission |
| ERPApi | Core ERP system managing order persistence and orchestration |
| InventoryService | Worker service for inventory availability checks |
| PickingService | Worker service for order picking operations |
| PackingService | Worker service for order packing operations |
| BlazorUI | WebAssembly front-end application |
| Contracts | Shared message contracts and DTOs |
| Entities | Shared domain models |
- .NET 10 SDK
- Docker Desktop (for RabbitMQ and Seq)
- k6 (for performance tests)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
docker run -d --name seq -p 5341:80 datalust/seq:latest- RabbitMQ Management UI: http://localhost:15672 (guest/guest)
- Seq Logging UI: http://localhost:5341
Open multiple terminals and run each service:
# Terminal 1 - ERPApi
cd ERPApi
dotnet run
# Terminal 2 - OrderApi
cd OrderApi
dotnet run
# Terminal 3 - InventoryService
cd InventoryService
dotnet run
# Terminal 4 - PickingService
cd PickingService
dotnet run
# Terminal 5 - PackingService
cd PackingService
dotnet run
# Terminal 6 - BlazorUI (optional)
cd BlazorUI
dotnet runOr run the entire solution from the root:
dotnet build StreamFlow.slnxRun all unit tests using the .NET CLI:
dotnet test StreamFlow.Tests/StreamFlow.Tests.csprojWith detailed output:
dotnet test StreamFlow.Tests/StreamFlow.Tests.csproj --logger "console;verbosity=detailed"Ensure all services are running, then execute the smoke test:
cd PerformanceTests
k6 run smoke-test.jsTo run with custom base URL:
k6 run -e BASE_URL=https://localhost:7033 smoke-test.jsThe smoke test runs 5 virtual users for 30 seconds and validates:
- 95th percentile response time < 500ms
- Error rate < 1%
- .NET 10 - All projects
- MassTransit - Service bus abstraction
- RabbitMQ - Message broker
- Entity Framework Core - Data persistence (SQLite)
- Serilog & Seq - Structured logging
- FluentValidation - Request validation
- xUnit - Unit testing framework
- k6 - Performance testing
This project is for educational purposes.