Skip to content
CAI
Software that uses CAICheck a score

Mo7ammedd/Talabat-APIs

43.5

Weak · 21 September 2026

2k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a .NET 9-based e-commerce API built on Clean Architecture, providing endpoints for user authentication, product cataloging, and order management. It implements a specification pattern for flexible querying and utilizes Redis for both basket state and response caching. The backend orchestrates payment processing via Stripe and manages persistent data through Entity Framework Core with SQL Server.

Features

Add order management and delivery method support

The repository layer now supports a complete order management system. New database tables for Orders, OrderItems, and DeliveryMethods have been added, along with their corresponding Entity Framework Core configuration classes (OrderConfigurations, OrderItemConfigurations, DeliveryMethodConfigurations). The StoreContext has been updated to include DbSets for these new entities, and the database migration script reflects the new schema. Additionally, the database seeding logic has been extended to populate the DeliveryMethods table from a JSON file, ensuring the system has default delivery options available upon initialization.

Talabat.Repository/Data · high confidence

Added identity database context and initial migration

Introduced the \AppIdentityDbContext\ in the \Talabat.Repository/Identity\ layer, including the EF Core context, design-time factory, and seed logic for an \AppUser\. This change also adds the initial SQL Server migration, which creates the standard ASP.NET Identity tables (roles, users, claims, logins, tokens) and an \Addresses\ table linked to users, establishing the foundational schema for user authentication and profile data.

Talabat.Repository/Identity · high confidence

Added order query specifications for retrieving orders by email and payment intent

New specification classes have been introduced to support querying orders. The \OrderSpecifications\ class allows fetching orders by buyer email or by order ID and email, including delivery method and order items. Additionally, \OrderWithPaymentIntentSpecification\ enables querying orders by payment intent ID. These changes facilitate more flexible order retrieval in the application.

Talabat.Core/Specifications/OrderSpecifications · high confidence

Initial project scaffolding with Docker and documentation

The repository now includes a Dockerfile, docker-compose.yml, and a comprehensive README.md that documents the Talabat e-commerce API's Clean Architecture, features, and setup instructions. A LICENSE file (MIT) and a .gitignore configuration for local development settings have also been added to standardize the project's operational and legal foundations.

(repo-wide) · high confidence

Introduce user identity models for address and profile data

Added new domain models in the Identity namespace: an \Address\ class to store user location details (name, street, city, country) and an \AppUser\ class that extends \IdentityUser\ to include a \DisplayName\ and a nested \Address\ property, establishing the core structure for user identity and profile management.

Talabat.Core/Models/Identity · high confidence

Introduces new backend services for authentication, orders, products, and caching

The Talabat.Services module now includes several new service implementations: AuthService for generating JWT tokens, OrderService for managing order creation and retrieval, ProductService for fetching product details and lists, PaymentService for handling Stripe payment intents, and ResponseCacheService for Redis-based response caching. These services implement their respective interfaces and integrate with the existing unit of work and repository patterns to support core e-commerce functionality.

Talabat.Services · high confidence

Introduces user authentication, order management, and product listing endpoints

The API now supports user registration, login, and profile management through the new AccountController, enabling users to create accounts, authenticate via JWT tokens, and update their personal details and addresses. A new OrderController allows authenticated users to create orders, retrieve their order history, and view available delivery methods. Additionally, the ProductsController has been enhanced to support pagination, caching, and filtering for product listings, while the BasketController provides standard CRUD operations for managing shopping carts.

Talabat.APIs · high confidence

Behavioural changes

Added basket and product domain models

Introduced new domain models for the shopping cart and product catalog. Added BasketItem and CustomerBasket classes to support cart functionality, including item details, payment intent, and shipping information. Updated existing models (Product, ProductBrand, ProductCategory, BaseModel) with minor formatting and whitespace changes.

Talabat.Core/Models · high confidence

Enhanced repository interfaces with specification pattern and unit of work

The repository contracts have been expanded to support the specification pattern and unit of work. A new IUnitOfWork interface was added to manage repository access and database transactions. The IGenericRepository interface was updated to include methods for retrieving entities using specifications (GetAllWithSpecAsync, GetWithSpecAsync, GetCountAsync) and standard CRUD operations (AddAsync, Update, Delete). Additionally, a new IBasketRepository interface was introduced to handle basket-specific operations like getting, updating, and deleting customer baskets.

Talabat.Core/Repositories.Contract · medium confidence

Introduce specification pattern and Redis-based basket repository

The repository layer now supports the Specification pattern, allowing queries to be composed via reusable criteria, sorting, and pagination rules applied through the new SpecificationsEvaluator. The GenericRepository has been extended with methods (GetAllWithSpecAsync, GetWithSpecAsync, GetCountAsync) that leverage these specifications, while the previous hard-coded Product includes have been removed in favor of the more flexible specification-based approach. Additionally, a new BasketRepository has been added to manage customer baskets using Redis via StackExchange.Redis, providing asynchronous get, update, and delete operations for basket data.

Talabat.Repository · medium confidence

Introduce specification-based product filtering, sorting, and pagination

Users can now search for products by name, filter by brand and category, sort results by price or name, and navigate through paginated product lists. This is enabled by new specification classes (BaseSpecifications, ISpecification, and specific product specs) that encapsulate query criteria, including a search parameter for product names, sorting options, and pagination controls.

Talabat.Core/Specifications/ProductSpecifications · medium confidence

Introduced Order aggregate model classes

Added new domain models for the Order aggregate, including Address, DeliveryMethod, Order, OrderItem, OrderStatus, and ProductItemOrder. These classes define the structure for managing order data, including shipping addresses, delivery methods, order status enums, and item details.

Talabat.Core/Models/Order Aggregate · medium confidence

New service contracts for authentication, orders, payments, products, and caching

The Talabat.Core/Services.Contract package introduces five new interfaces defining the core service layer: IAuthService for token creation, IOrderService for order and delivery method management, IPaymentService for payment intents, IProductService for product and category retrieval, and IResponseCacheService for caching responses. These interfaces establish the API contracts for these distinct functional areas.

Talabat.Core/Services.Contract · medium confidence

Dependencies

Upgrade .NET 6 to .NET 9 across all projects

All four project files (Talabat.APIs, Talabat.Core, Talabat.Repository, and Talabat.Services) have been updated to target .NET 9. This includes upgrading the Microsoft.EntityFrameworkCore packages from version 6.0.33 to 9.0.0, and adding new dependencies such as StackExchange.Redis, AutoMapper, Scalar.AspNetCore, and Stripe.net.

(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 44 → 44 (-0.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 82 → 82 (-0.0)
  • Architecture 87 → 87 (+0.0)
  • Maturity 57 → 56 (-1.1)
  • Readiness 21 → 21 (+0.0)
  • Security 61 → 60 (-1.0)

Resolved (4)

  • No exposed public API
  • Small-team knowledge concentration
  • The Getting Started section only describes Docker running (ports 8080, 6379, 1433) without showing how to run the application locally with appsettings.json configuration or test the endpoints. (README.md)
  • redundant comment (Talabat.APIs/Extensions/ApplicationServicesExtensions.cs)

New (14)

  • Documentation: no usage examples (README.md)
  • Duplicated block (5 lines × 2) (Talabat.Core/Specifications/BaseSpecifications.cs)
  • End-of-life runtime: .NET net9.0
  • High IaC: WD-DOCKER-0006 (DockerFile)
  • Inconsistent casing in ProductsSpecParams: 'sort' and 'categoryId' are camelCase, while 'Search' and 'PageSize' are PascalCase. This suggests a mix of naming conventions for DTO/Spec parameters.
  • Inconsistent spelling of 'Middleware': 'MiddleWare' (camel case) in extension method name vs 'Middleware' (lowercase 'w') in class name.
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • Medium IaC: WD-DOCKER-0003 (DockerFile)
  • Medium IaC: WD-DOCKER-0003 (DockerFile)
  • Rotate the exposed credentials — git history can't be un-committed
  • Secret: stripe-access-token (Talabat.APIs/appsettings.json)
  • Typo in migration class name: 'InitialMigratio0n' uses the digit '0' instead of the letter 'o' at the end.
  • redundant comment (Talabat.Core/Models/Order Aggregate/Order.cs)

API surface

  • Unchanged — 14 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

Mo7ammedd/Talabat-APIs 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 6dd85c2e1edbdeccd0a0e17a03f33fc2f78af96b — 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-fa71c66cabd8.