Skip to content
CAI
Software that uses CAICheck a score

mostafasharaby/E-Commerce-Microservices

41.0

Weak · 21 September 2026

6.5k

lines of production code

C#

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.