mostafasharaby/E-Commerce-Microservices
41.0
Weak · 21 September 2026
6.5k
lines of production code
C#
primary language
1
measurement over time
What this system is
This system is a .NET 8-based microservices platform designed for e-commerce operations, orchestrating the full lifecycle of online shopping. It coordinates distinct services for authentication, product cataloging, inventory management, shopping carts, wishlists, orders, and payments. The architecture leverages shared infrastructure for caching, messaging, and validation to support these interconnected business capabilities.
Features
API Gateway routing and configuration
The ApiGateWay service is introduced, providing a unified entry point for client requests. It uses Ocelot to route traffic to downstream microservices for products, orders, payments, authentication, carts, wishlists, and inventory. The configuration includes rate limiting, caching, JWT authentication, and header injection for each route.
src/ApiGateWay · medium confidence
Add shared infrastructure for authentication, messaging, caching, and error handling
This change introduces a new \SharedService\ library that provides reusable components across the microservices architecture. It adds JWT authentication configuration, a generic repository pattern with unit-of-work support, and a validation behavior for FluentValidation integration. It also includes a RabbitMQ message producer for asynchronous communication, a Redis-based distributed cache service, and a global exception handling middleware that standardizes error responses. Additionally, it provides a generic \Response\<T\>\ wrapper for API results, localization resources for multi-language support, and Swagger configuration for API documentation.
src/SharedService · high confidence
Cart service API and application layer
The CartService now exposes a full REST API for managing shopping carts, including creating, updating, deleting, and retrieving carts by ID or user ID. The implementation uses a MediatR-based command/query pattern with FluentValidation for input validation. The service connects to a SQL Server database and utilizes Redis for caching cart data. Additionally, a background service has been added to consume 'order.failed' events from a message queue to release inventory stock when an order fails.
src/CartService · high confidence
Introduce Auth Service with full user authentication and management capabilities
The Auth Service is introduced, providing a complete authentication and user management system. This includes endpoints for user registration (admin and standard users), login, password management (change, forgot, reset), email confirmation, and account deletion. It supports Google OAuth login and JWT-based authentication with token refresh capabilities. The service also exposes APIs to retrieve user profiles and manage user details, backed by an Entity Framework Core database context and FluentValidation for input validation.
src/AuthService · high confidence
Introduce Payment Service with order integration and background processing
The Payment Service is introduced, providing a new API to create, update, and query payments. The service integrates with the Order Service to validate orders before processing payments. Background services are added to consume 'order.created' events from a message queue, process payments, and publish 'payment.processed' events. The database schema is initialized with a 'Payments' table, and the service is configured with dependency injection, including MediatR, AutoMapper, and FluentValidation.
src/PaymentService · high confidence
Launch of the Inventory Service
The Inventory Service is now available, providing endpoints to manage stock levels. Users can add, reserve, release, update, and reconcile stock quantities, as well as query current stock and identify low-stock items. The service integrates with RabbitMQ to automatically create inventory records when new products are created, and uses a SQL database with Redis caching for performance.
src/InventoryService · high confidence
Launched the Product Service with full CRUD operations and stock integration
The Product Service is now live, exposing endpoints to create, update, delete, and retrieve products, as well as search and check stock levels. The service implements a clean architecture with MediatR handlers, FluentValidation, and AutoMapper. It integrates with an Inventory Service to fetch stock information and uses Redis caching for performance. The default Weather Forecast functionality has been removed.
src/ProductService · high confidence
Order service exposes full CRUD and cart-integration endpoints
The OrderService now provides a complete set of order management capabilities. Users can create, retrieve, update, and delete orders via REST endpoints. The service integrates with external systems: it validates customer and product existence via the AuthService and ProductService, and supports creating orders directly from a user's shopping cart. Additionally, the service is configured with HTTP clients for Inventory, Cart, and Payment services, and includes a Dockerfile for containerized deployment.
src/OrderService · high confidence
Wishlist service API and application layer implementation
The Wishlist service is now fully implemented, exposing a REST API for managing user wishlists. The \WishlistsController\ exposes endpoints to create, read, update, and delete wishlists, as well as add or remove items. The application layer implements the full CRUD and item-management logic using the MediatR pattern, with handlers processing commands and queries. The infrastructure layer provides the \WishlistDbContext\ for database access, a repository pattern for data operations, and a caching strategy using Redis. Additionally, a database migration script and entity mappings are included to support the new schema.
src/WishListService · high confidence
Dependencies
Initial .NET 8 microservices architecture with shared libraries and test scaffolding
The project introduces a new .NET 8 microservices architecture, establishing the foundational structure for services including Auth, Cart, Inventory, Order, Payment, Product, and Wishlist. Each service is organized into a standard layered architecture (Api, Application, Domain, Infrastructure, and Tests) and references a shared library containing common dependencies such as Entity Framework Core 8.0.14, MediatR 12.4.1, and RabbitMQ.Client 6.8.1. The update also adds test scaffolding using xUnit and Moq across all services.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 36 → 41 (+4.9)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 80 (new)
- Architecture 76 (new)
- Maturity 37 → 47 (+9.9)
- Readiness 17 → 22 (+4.7)
- Security 98 → 53 (-44.6)
- Event-Driven 100 (new)
Resolved (116)
- Dependency hygiene not measured — no supported dependency manifest was read
- Dimension evaluation failed
- Low coverage: AddStockCommand.cs (InventoryService/InventoryService.Application/Commands/AddStockCommand.cs)
- Low coverage: AppUser.cs (AuthService/Auth.Domain/Entities/AppUser.cs)
- Low coverage: AppUserHandler.cs (AuthService/Auth.Application/Handlers/AppUserHandler.cs)
- Low coverage: AppUserQueryHandler.cs (AuthService/Auth.Application/Handlers/AppUserQueryHandler.cs)
- Low coverage: ApplicationDependencyInjection.cs (OrderService/OrderService.Application/ApplicationDependencyInjection.cs)
- Low coverage: ApplicationDependencyInjection.cs (ProductService/ProductService.Application/ApplicationDependencyInjection.cs)
- Low coverage: AuthApplicationDependencyInjection.cs (AuthService/Auth.Application/AuthApplicationDependencyInjection.cs)
- Low coverage: AuthHandler.cs (AuthService/Auth.Application/Handlers/AuthHandler.cs)
- Low coverage: AuthMappingProfile.cs (AuthService/Auth.Application/Mappings/AuthMappingProfile.cs)
- Low coverage: BaseDbContext.cs (SharedService/Shared/BaseDbContext.cs)
- Low coverage: CacheService.cs (SharedService/Shared/RedisCache/CacheService.cs)
- Low coverage: CancelOrderCommand.cs (OrderService/OrderService.Application/Commands/CancelOrderCommand.cs)
- Low coverage: Cart.cs (CartService/CartService.Domain/Entities/Cart.cs)
- Low coverage: CartApplicationDependencyInjection.cs (CartService/CartService.Application/CartApplicationDependencyInjection.cs)
- Low coverage: CartCommandHandler.cs (CartService/CartService.Application/Handlers/CartCommandHandler.cs)
- Low coverage: CartCommandValidator.cs (CartService/CartService.Application/Validators/CartCommandValidator.cs)
- Low coverage: CartExpiredEvent.cs (CartService/CartService.Application/Events/CartExpiredEvent.cs)
- Low coverage: CartItem.cs (CartService/CartService.Domain/Entities/CartItem.cs)
- …and 96 more
New (88)
- CommentedOutCode (src/AuthService/Auth.Api/Controllers/AccountController.cs)
- CommentedOutCode (src/AuthService/Auth.Infrastructure/AuthInfrastructureDependencyInjection.cs)
- CommentedOutCode (src/OrderService/OrderService.Application/Handlers/OrderCommandHandler.cs)
- CommentedOutCode (src/ProductService/ProductService.Application/Handlers/ProductCommandHandler.cs)
- CommentedOutCode (src/SharedService/Shared/Messaging/RabbitMQProducer.cs)
- CommentedOutCode (src/SharedService/Shared/SharedDependencyInjection.cs)
- CommentedOutCode (src/WishListService/WishlistService.Application/Validators/WishlistCommandValidator.cs)
- CommentedOutCode (src/WishListService/WishlistService.Application/Validators/WishlistCommandValidator.cs)
- Dead code: CartExpirationBackgroundService (src/CartService/CartService.Application/BackgroundServices/CartExpirationBackgroundService.cs)
- Documentation: no contributor guidance (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (src/CartService/CartService.Application/BackgroundServices/StockEventConsumer.cs)
- Duplicated block (10 lines × 3) (src/WishListService/WishlistService.Application/Handlers/WishlistCommandHandler.cs)
- Duplicated block (11–13 lines × 2) (src/CartService/CartService.Infrastructure/Repositories/CartRepository.cs)
- Duplicated block (13 lines × 3) (src/CartService/CartService.Infrastructure/Services/HttpClientServiceExtensions.cs)
- Duplicated block (14 lines × 2) (src/CartService/CartService.Infrastructure/Repositories/CartRepository.cs)
- Duplicated block (15 lines × 2) (src/CartService/CartService.Infrastructure/Services/HttpClientServiceExtensions.cs)
- Duplicated block (9 lines × 2) (src/CartService/CartService.Infrastructure/Repositories/CartRepository.cs)
- Duplicated block (9 lines × 2) (src/InventoryService/InventoryService.Application/Handlers/InventoryCommandHandler.cs)
- Inconsistent naming convention for migration classes. Some use camelCase with a suffix like 'Int' or 'init' (wishlistInt, order_init, auth_init, paymentinit, inventoryinit), while others use PascalCase (WishlistDbContextModelSnapshot). Additionally, the suffixes vary ('Int', 'init', 'init', 'init', 'init').
- …and 68 more
API surface
- Unchanged — 57 HTTP endpoints
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mostafasharaby/E-Commerce-Microservices was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6550ae120814ab6244074236010cd0169aac4651 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.