MicroMart
Microservices e-commerce platform with RabbitMQ, YARP gateway, and Docker
About This Project
A production-grade microservices e-commerce system with 4 services (Catalog, Orders, Inventory, Notifications), an API gateway with YARP, async messaging with RabbitMQ, and full Docker Compose orchestration. Demonstrates service boundaries, async communication, and distributed system patterns.
What You'll Learn
Key Features
Project Structure
MicroMart/ ├── gateway/ # YARP API Gateway ├── services/ │ ├── catalog/ # Product catalog service │ ├── orders/ # Order management + Saga │ ├── inventory/ # Stock tracking service │ └── notifications/ # Email/push notifications ├── shared/ │ └── MicroMart.Contracts/ # Shared message contracts ├── docker-compose.yml └── docker-compose.override.yml
Setup Guide
Clone the repository
Clone MicroMart with all 4 services and the gateway.
git clone https://github.com/asmanasir/MicroMart.git cd MicroMart
Start everything with Docker Compose
One command starts all services, RabbitMQ, PostgreSQL, Redis, Jaeger, and Seq.
docker-compose up -d
Verify all services are running
Check each service health endpoint.
# Gateway (single entry point) curl http://localhost:5000/health # Individual services curl http://localhost:5001/health # Catalog curl http://localhost:5002/health # Orders curl http://localhost:5003/health # Inventory
Running the Project
Access the API through the gateway
All traffic goes through the YARP gateway on port 5000.
# Browse products
curl http://localhost:5000/api/catalog/products
# Place an order (triggers Saga across 3 services)
curl -X POST http://localhost:5000/api/orders \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"productId": "...", "quantity": 2}'Watch distributed tracing in Jaeger
See how a single API call traces through multiple services.
# Open Jaeger UI http://localhost:16686 # Open Seq for centralized logs http://localhost:5341 # RabbitMQ management http://localhost:15672 # admin/password
Project Info
Tech Stack
Prerequisites
- .NET 8 SDK installed
- Docker Desktop with at least 4 GB RAM allocated
- Basic understanding of REST APIs and Docker
Learnixo
Project Author
The most complete microservices project on the platform. Every service has its own database, communicates async via RabbitMQ, and is observable end-to-end. This is what senior .NET developers are expected to build.