Skip to content
CAI
Software that uses CAICheck a score

mo7amedaliEbaid/nibbles-ecommerce-food

60.6

Weak · 21 September 2026

10.5k

lines of production code

Dart

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a cross-platform mobile and desktop application built with Flutter, designed to manage user accounts, meal plans, and e-commerce transactions. It implements a clean architecture using BLoC/Cubit state management to handle authentication, user profiles, and child profiles. The system integrates with Firebase Firestore to persist and stream data for meals, packages, orders, and favorites, while also supporting platform-specific features like deep linking and notifications.

Features

Add Meals BLoC for meal data management

Introduced a new BLoC architecture for the meals feature, including the main MealsBloc class and its associated events (LoadAllMeals, LoadMealsByCategory, UpdateMeals) and states (MealsLoading, MealsLoaded). This provides a structured way to manage and display meal data within the application.

lib/application/blocs/meals · high confidence

Add Sign-In BLoC for email/password authentication

Introduced the Sign-In BLoC (including SignInEvent, SignInState, and the main bloc class) to handle user authentication via email and password credentials. This new component manages the sign-in flow, transitioning through submitting, success, and error states while interacting with the AuthRepository.

_lib/application/blocs/sign\_in\bloc · high confidence

Added PackagesBloc for managing package list state

Introduced a new BLoC implementation for the packages domain, including the main bloc, event, and state classes. This adds the ability to load and update a list of packages via a stream subscription to the repository, transitioning between loading and loaded states.

lib/application/blocs/packages · high confidence

Added Windows support for Cloud Firestore, Connectivity Plus, Firebase Auth, and URL Launcher plugins

The Windows build configuration now includes the Cloud Firestore, Connectivity Plus, Firebase Auth, and URL Launcher plugins. This enables these features to function on Windows devices, expanding platform support beyond previous limitations.

windows · high confidence

Added products data layer and BLoC for product management

Introduced the core architecture for managing product data in the application. This includes a new ProductsBloc to handle loading and updating product states, along with the corresponding events and states. A ProductsRepo implementation was added to fetch product data from Firebase Firestore, exposing a stream of all products. This establishes the foundation for displaying and managing product information within the app.

_lib/application/blocs/products, lib/repositories/products\repos · high confidence

Adds application state management for core e-commerce and user features

Introduces a comprehensive set of Cubits and their corresponding state classes to manage application logic for key features including address management, kid profiles, connectivity status, contact forms, favorite meals and packages, filtering, order placement, and search. This change implements the state management layer for these specific domains within the application.

lib/application/cubits · high confidence

Introduce BLoC-based authentication, sign-up, and user profile management

Added new BLoC implementations for handling authentication state changes, user sign-up with credentials, and user profile data retrieval. The AuthBloc manages login status and sign-out requests, the SignUpBloc processes new account creation, and the UserBloc fetches and tracks the current user's profile details. These components provide a structured, reactive approach to managing user sessions and data in the application.

_lib/application/blocs/auth\_bloc, lib/application/blocs/sign\_up\_bloc, lib/application/blocs/user\bloc · high confidence

Introduce CategoriesBloc for managing meal category state

Added a new BLoC implementation for the categories feature, introducing a state-driven approach to managing meal category data. The new CategoriesBloc handles LoadCategories and UpdateCategories events, utilizing a stream subscription to reactively update the UI state between CategoriesLoading and CategoriesLoaded states.

lib/application/blocs/categories · high confidence

Introduce Kid repository for managing children's profiles

A new repository layer has been added to manage children's profiles in the application. This includes a base interface defining operations to add a child and retrieve a stream of children associated with a user, alongside an implementation that persists child data to a 'kids' collection in Cloud Firestore.

_lib/repositories/kid\repos · high confidence

Introduce address repository for Firestore integration

A new address repository implementation has been added to the codebase, providing methods to add and retrieve user addresses from a Firestore 'addresses' collection. The repository defines an abstract base class and a concrete implementation that maps Address models to and from Firestore documents, enabling the application to persist and stream user-specific address data.

_lib/repositories/address\repo · high confidence

Introduce meal data repository with Firebase integration

A new meal repository has been added to the application, providing a centralized interface for retrieving meal data from a Firebase Firestore collection. This repository supports fetching all meals, searching by category or name, filtering by calorie range, and filtering by specific facts. It also includes a method to retrieve meals by QR code hash, enabling users to scan codes to access specific meal information.

_lib/repositories/meals\repos · high confidence

Introduce order management repository for Firestore integration

Added a new OrdersRepository that implements the BaseOrdersRepository interface, enabling the application to place new orders and retrieve a stream of existing orders for a specific user from a Firestore collection.

_lib/repositories/orders\repos · medium confidence

Introduce package repository abstraction for Firestore data access

A new repository layer has been added to manage package data from Firebase Firestore. The \PackagesRepos\ class implements the \BasePackagesRepository\ interface, providing stream-based access to all packages and the ability to search for packages by name using Firestore's range queries. This introduces a structured way to fetch package data, separating the data-fetching logic from the UI or business logic layers.

_lib/repositories/packages\repos · high confidence

Introduce repository layer for authentication and user data

Added new repository classes to abstract Firebase Auth and Firestore interactions. The AuthRepository implements sign-in, sign-up, and sign-out logic, mapping Firebase exceptions to user-friendly errors, while the UserRepository provides a stream of user data from Firestore. These changes establish a clean architecture for managing user identity and profile information.

_lib/repositories/auth\_repos, lib/repositories/user\repos · high confidence

Introduce repository layer for contact messages and site information

Added new repository classes to abstract data access for the app's content and contact features. The \ContactUsRepo\ now handles saving contact form submissions to a Firestore collection, while \InfoRepo\ provides real-time streams for the About, Privacy, and Terms pages by fetching from Firestore. These changes establish a cleaner separation of concerns for managing user input and static site information.

_lib/repositories/contact\message · high confidence

Introduced categories repository for fetching meal categories

Added a new CategoriesRepo class that retrieves meal categories from a Firestore 'categories' collection, exposing a stream of MealCategory objects. This repository is now exported via the main repositories barrel file, making the categories data source available to the application's presentation layer.

_lib/application, lib/repositories, lib/repositories/categories\repos · high confidence

Introduced favorite meals and packages repositories

Added new repository implementations for managing user favorites, specifically for meals and packages. The changes introduce \FavoriteMealsRepository\ and \FavoritePackagesRepository\ classes that interact with Firebase Firestore to handle adding, removing, and retrieving favorite items. These repositories provide methods to add or remove items from a user's favorite list and stream the current list of favorites, enabling users to save and access their preferred meals and packages.

_lib/repositories/favourite\_meals\repo · high confidence

Introduced new presentation screens for the app's core user flows

Added a comprehensive set of new UI screens to the presentation layer, including authentication (login, signup, intro), user management (add kid, kid profile), content browsing (categories, meals, favorites), and commerce (checkout, order details, addresses). These files establish the visual structure and state management (via BLoC/Cubit) for these key user journeys.

lib/presentation/screens · high confidence

Introduces new data models for the application

Added new model classes to represent core entities in the app, including Address, ContactMessage, Info, Kid, Meal, MealCategory, Order, Package, Product, and User. These models provide structured data representations with serialization (toDocument) and deserialization (fromSnapshot) methods for Firestore integration, enabling the app to manage user profiles, meal plans, orders, and other domain-specific data.

lib/models · high confidence

New presentation widgets for kid management, checkout, and order tracking

The app introduces a suite of new UI components in the presentation layer to support new and enhanced features. A multi-step form for adding and managing child profiles is now available, allowing parents to input and view kid details. The checkout flow is expanded with dedicated widgets for displaying product items, applying coupon codes, and calculating package totals. Additionally, users can now view their order history and details through new list and item widgets, while a calendar widget enables date selection for orders. The update also includes reusable UI elements such as custom text fields, buttons, and bottom sheets for authentication and contact forms.

lib/presentation/widgets · high confidence

Behavioural changes

Added Linux support for the url\_launcher plugin

The Linux build configuration now includes the url\_launcher plugin, enabling URL launching capabilities on Linux desktop environments.

linux · high confidence

Centralized app initialization and core infrastructure setup

The application's entry point (main.dart) and the root widget (app.dart) have been restructured to initialize Firebase Cloud Messaging (FCM) and local notifications before launching the app. This change introduces a comprehensive set of core utilities, including a custom error handling system (CustomError, exceptions, and failures), a BLoC observer for debugging, and a new router (AppRouter) that maps deep links and screen names to specific UI screens. Additionally, the app's typography configuration has been updated to include letter spacing, and the constants for assets and colors have been expanded to support the new screens and features.

lib/core · high confidence

iOS build configured with CocoaPods integration

The iOS project has been updated to support CocoaPods. The Xcode project file now includes build phases to check and embed Pods frameworks, and references to the Pods project and framework files have been added to the workspace and build settings. This enables the use of third-party iOS libraries via CocoaPods.

ios · high confidence

macOS build configured for Firebase and platform plugins

The macOS build configuration now includes support for Firebase services (Firestore, Auth, Messaging, Core) and platform plugins (Connectivity, Local Notifications, URL Launcher). This enables the macOS target to utilize these specific Flutter plugins, which were previously unregistered in the generated plugin registrant.

macos · high confidence

Test coverage

Updated widget test to use new app entry point

The widget test was updated to import the application from the new \core/app/app.dart\ module instead of the previous \main.dart\ entry point, ensuring the test suite validates the correct application structure.

test · high confidence

Dependencies

Updated iOS, macOS, and Android build configurations and Dart dependencies

The iOS and macOS build scripts (Podfiles) have been updated to configure the respective platforms, while the Android build configuration disables resource shrinking and minification for the release build. Additionally, the project's Dart dependencies have been updated: new packages such as cloud\_firestore, firebase\_auth, firebase\_messaging, connectivity\_plus, and carousel\_slider have been added, and existing packages like firebase\_core and collection have been upgraded to newer versions.

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

Lenses

  • Code Health 100 → 94 (-6.3)
  • Architecture 99 → 98 (-1.9)
  • Maturity 61 → 61 (+0.0)
  • Readiness 61 → 39 (-21.8)
  • Security 90 → 95 (+5.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (8)

  • Change coupling: home.dart ↔ meals_vertical_listview.dart (lib/presentation/screens/home.dart)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Secret: gcp-api-key (android/app/google-services.json)
  • Test reliability not included
  • complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
  • single-maintainer — knowledge-concentration (bus factor) risk

New (47)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (lib/presentation/screens/more.dart)
  • Duplicated block (10 lines × 2) (lib/repositories/meals_repos/meal_repo.dart)
  • Duplicated block (11 lines × 2) (lib/presentation/screens/checkout.dart)
  • Duplicated block (11 lines × 2) (lib/repositories/favourite_meals_repo/fav_meals_repo.dart)
  • Duplicated block (11 lines × 3) (lib/presentation/widgets/filter_bottom_sheet.dart)
  • Duplicated block (11–12 lines × 3) (lib/core/functions/fcm.dart)
  • Duplicated block (12 lines × 2) (lib/presentation/screens/login.dart)
  • Duplicated block (12 lines × 2) (lib/presentation/screens/profile.dart)
  • Duplicated block (12–13 lines × 2) (lib/presentation/screens/about.dart)
  • Duplicated block (13–14 lines × 2) (lib/presentation/screens/favourites.dart)
  • Duplicated block (14–15 lines × 2) (lib/repositories/favourite_meals_repo/fav_meals_repo.dart)
  • Duplicated block (15 lines × 2) (lib/core/functions/fcm.dart)
  • Duplicated block (16 lines × 2) (lib/presentation/screens/privacy.dart)
  • Duplicated block (19–20 lines × 2) (lib/repositories/favourite_meals_repo/fav_meals_repo.dart)
  • Duplicated block (21 lines × 2) (lib/presentation/screens/home.dart)
  • Duplicated block (21–23 lines × 2) (lib/presentation/screens/search.dart)
  • Duplicated block (24–25 lines × 2) (lib/presentation/screens/order_details.dart)
  • …and 27 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

mo7amedaliEbaid/nibbles-ecommerce-food 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 e02a253d52087a5cfdaed87fc477b71eed1e707d — 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.