AhmedLSayed9/deliverzler
69.9
Adequate · 21 September 2026
11.9k
lines of production code
Dart
primary language
4
measurements over time
What this system is
This system is a cross-platform delivery application for iOS, Android, and macOS that manages order lifecycles and real-time logistics. It enables users to authenticate, browse orders, and track deliveries via an interactive map powered by Google Maps. The app handles push notifications for order updates and allows delivery personnel to update order statuses and share their location.
Features
Generated asset path constants for type-safe resource access
A new generated file, lib/gen/my\_assets.dart, has been added to provide strongly-typed constants for all application assets. This allows developers to reference image, icon, and map style resources (such as the app logo, splash animations, and map styles) via the MyAssets class instead of using raw string paths, reducing the risk of typos and improving code maintainability.
lib/gen · high confidence
Initial macOS platform support added
The macOS platform is now supported for the deliverzler application. This change introduces the complete Xcode project structure, including the Flutter runner configuration, app icons, and the main menu interface. It also registers key plugins such as Firebase (Auth, Firestore, Messaging, Storage), connectivity, location, and local notifications, enabling these features to function on macOS.
macos · high confidence
New responsive centering widget and updated layout logic
A new ResponsiveCenter widget has been added to allow children to be centered with a configurable maximum content width, automatically shrinking to fill available space on smaller screens; a corresponding ResponsiveSliverCenter is also provided for use within sliver-based layouts. Additionally, the underlying responsive layout logic has been refactored: the WindowSizeClass enum now determines window size based on device type (using width for desktop/web and shortest side for mobile) via a new PlatformHelper, and the previous widget\_builders.dart file has been renamed to responsive\_layouts.dart to reflect this updated approach to adaptive design.
_lib/core/presentation/widgets/responsive\widgets · high confidence
Removals
Removal of notification domain models and FCM providers
The notification feature's domain model (AppNotification), its infrastructure DTOs for serialization, and the Riverpod providers for handling Firebase Cloud Messaging (FCM) events (initial message, foreground messages, and opened-app messages) have been removed. This eliminates the local handling and parsing of FCM payloads within this feature layer.
lib/features/notifications · high confidence
Removed legacy theme and color implementation files
The theme infrastructure in this location has been cleaned up by deleting the legacy color definitions (AppColorsDark, AppColorsLight), the abstract color interface (IAppColors), the abstract theme interface (ITheme) and its extension, the dark and light theme implementations (ThemeDark, ThemeLight), and the Cupertino custom theme helper. This removes the old structural components used to define and apply the app's visual styling from this specific directory.
_lib/core/core\features/theme/presentation/utils/themes · high confidence
Behavioural changes
Android app now uses full-screen layout and configurable API keys
The Android app has been updated to run in full-screen mode by default, hiding the status and navigation bars to provide an immersive experience, and now supports precise location tracking alongside coarse location. Additionally, the Google Maps API key is no longer hardcoded but is configured via the \ANDROID\_GOOGLE\_MAPS\_API\_KEY\ environment variable, and the default Firebase notification channel has been renamed to \high\_importance\_channel\. The project also upgraded the Gradle wrapper from version 7.0.2 to 7.6.1.
android · high confidence
Centralized order interaction dialogs
A new \OrderDialogs\ utility class has been introduced to standardize user interactions related to orders. This component consolidates the logic for displaying order details, handling order cancellations (including capturing user notes), showing restrictions on order progression, and confirming user choices, ensuring consistent behavior across the home feature.
lib/features/home/presentation/widgets · high confidence
Generated DTOs and map overlay providers; refined order data model and provider implementations
New generated files are added for OrderDto, UpdateDeliveryGeoPointDto, and UpdateDeliveryStatusDto (Freezed and JsonSerializable), and for map overlay providers (MapCircles, MapMarkers, MapPolylines) using Riverpod generators. In the OrderDto model, the id field is moved to the end of the constructor, and the fromFirestore and parseListOfDocument factory methods are re-added and simplified. In the map overlay providers, internal helper methods (\_addCircle, \_addMarker, \_addPolylineFromDirections) are made void and their local state copies use Set.from(state) instead of Set.from(state), and fold callbacks are simplified to pass the helper directly.
_lib/features/home/infrastructure/dtos, lib/features/map/presentation/providers/map\_overlays\providers · high confidence
Generated provider for OrdersRemoteDataSource and code formatting updates
A generated Riverpod provider (OrdersRemoteDataSourceProvider) has been added to expose the OrdersRemoteDataSource, enabling dependency injection for order data retrieval. The underlying data source implementation and its generated file have also been updated with code formatting improvements.
_lib/features/home/infrastructure/data\sources · high confidence
Google Maps API keys are now configured via build-time environment variables
The Google Maps API configuration no longer uses hardcoded placeholder strings in the source code. Instead, it retrieves the Android and iOS API keys from build-time environment variables (ANDROID\_GOOGLE\_MAPS\_API\_KEY and IOS\_GOOGLE\_MAPS\_API\_KEY) using dart-define. If these variables are not provided during the build, the application will throw an AssertionError, requiring developers to supply the keys at build time rather than editing the source file.
_lib/core/infrastructure/network/google\_map\api · high confidence
Home screen order cards and list behavior updated
The home screen's order card components now use a centralized styling system (TextStyles) and updated sizing constants, resulting in minor visual adjustments such as centered text alignment and consistent padding. The upcoming orders list has been refactored to center the 'no orders' and error states, and the pull-to-refresh action now silently suppresses errors to prevent disruptive UI flashes. Additionally, the order action logic (map, confirm, deliver, cancel) has been migrated from a local helper to a new authority service that checks permissions before proceeding, replacing the previous dialog-based validation approach.
lib/features/home/presentation/components · high confidence
Home screen orders now filter by current user and use parallel execution for location updates
The home screen's order providers now scope data to the currently authenticated user: \upcomingOrders\ and \myDeliveringOrders\ filter results by the user ID from \auth\_state\_provider\, ensuring delivery personnel only see their own orders. Additionally, the \update\_delivery\_geo\_point\_provider\ now uses \Iterable.wait\ (via \futures.wait\) instead of \Future.wait\ to run parallel location updates for all delivering orders, and the location service dependency has been refactored from an interface (\ILocationService\) to a concrete implementation (\LocationService\).
lib/features/home/presentation/providers · high confidence
Improved error handling and logging in Google Maps API client
The Google Maps API facade now provides generic response types (Response\<T\>) for all HTTP methods, allowing callers to receive typed data instead of untyped responses. Error handling has been refactored to preserve stack traces when converting API errors to server exceptions, which aids in debugging. Additionally, the underlying Dio client now uses the standard logging package with finest-level output instead of a custom logging interceptor, ensuring consistent and detailed network request logging.
_lib/core/infrastructure/network/google\_map\_api/api\callers · high confidence
Improved error handling and stack trace preservation in Firebase API callers
The Firebase authentication, storage, and Firestore facade implementations now use a unified error handling strategy that preserves stack traces when converting Firebase errors to server exceptions. This change ensures that debugging information is retained for better diagnostics, while also updating the generated Riverpod providers for these facades.
_lib/core/infrastructure/network/main\_api/api\callers · high confidence
Improved splash screen reliability and provider logging
The splash screen now pre-warms shared preferences to prevent theme flickering on older Android devices, and uses a more robust wait mechanism to handle initialization errors gracefully. Provider logging has been enhanced with detailed state change tracking, and crash reporting now filters out expected errors like cache misses and unauthorized access to reduce noise.
lib/core/presentation/providers · high confidence
Legacy platform widgets refactored for edge-to-edge support and styling unification
The presentation layer's legacy platform widgets have been reorganized into a dedicated \legacy\ directory and updated to support modern Android display behaviors. Key changes include replacing the \supportsFullscreen\ check with \supportsEdgeToEdge\ to handle system navigation bars on older Android APIs (26-28) and enabling fullscreen splash screens. The \PlatformScaffold\ now uses a \hasStatusBarSpace\ flag to conditionally render status bar spacers instead of empty app bars, and the \PlatformApp\ now requires a \routerConfig\. Styling has been unified by removing hardcoded font families and sizes in favor of theme-based properties, and the \CustomTextFormField\ now delegates border and padding styles directly to the current theme's \inputDecorationTheme\.
lib/core/presentation/widgets/legacy · high confidence
Locale data source and repository methods are now synchronous
The \getAppLocale\ method in both \LocaleLocalDataSource\ and \LocaleRepo\ no longer returns a \Future\, making the retrieval of the application's locale synchronous. This change simplifies the API for consumers who only need to read the current locale setting, as it removes the need to await the result. The underlying implementation now uses a synchronous \restoreData\ call from the shared preferences facade, and the generated Riverpod provider files have been updated to reflect these structural changes.
_lib/core/core\features/locale/infrastructure · high confidence
Locale enum now includes font family and uses generated assets
The AppLocale enum has been updated to include a font family property for each locale, allowing the application to apply specific typography (Poppins for English, Tajawal for Arabic) alongside the language code and flag asset. The flag images are now sourced from generated asset code rather than a manual styles helper, and the language name retrieval logic has been refactored from an extension method to a switch expression within the enum itself.
_lib/core/core\features/locale/presentation/utils · high confidence
Locale provider initialization simplified and generated code added
The locale state management in the presentation layer has been refactored to improve startup performance and code maintainability. The \AppLocaleController\ no longer waits for shared preferences to be fully restored before building, removing an \await\ on \sharedPrefsAsyncProvider\ and switching the \build\ method to return \FutureOr\<AppLocale\>\; this allows the locale to be determined synchronously where possible, reducing potential flickering during splash screen display. Additionally, generated Riverpod code (\\*.g.dart\) for \appLocaleControllerProvider\ and \currentAppLocaleProvider\ has been committed to the repository, and the \currentAppLocale\ provider was simplified to directly watch the controller's value without unnecessary nullable casting.
_lib/core/core\features/locale/presentation/providers · high confidence
Localization assets updated and manual delegate class removed
The manual \L10n\ class in \lib/l10n/l10n.dart\ has been removed, indicating a migration to auto-generated localizations delegates. The English and Arabic translation files (\app\_en.arb\, \app\_ar.arb\) have been updated: font family names are now capitalized (e.g., 'Poppins', 'Tajawal'), and new strings for a 'Screen not found' state and order cancellation have been added. Additionally, existing text has been refined, such as changing 'SIGN IN' to 'Sign in' and correcting punctuation in several messages.
lib/l10n · high confidence
Login UI modernized with Material styling and simplified state management
The login screen now uses standard Material widgets instead of platform-specific abstractions, removing the \LoginTextFieldsSection\ component and inlining \TextFormField\ fields with direct \InputDecoration\ styling. The sign-in button has been replaced with \CustomElevatedButton\ featuring a gradient and uppercase text, while asset references have been migrated to the generated \MyAssets\ code-gen system. Additionally, the form submission logic was simplified by removing the intermediate \Event\ class and calling \signIn\ directly on the state provider.
lib/auth/presentation/components · high confidence
Map UI modernization and order confirmation logic update
The map presentation components have been updated to use the new centralized styling system (replacing hardcoded sizes and custom widgets with \TextStyles\ and \CustomElevatedButton\), and the map search bar now clears its query when the input is empty. Additionally, the map confirm button now uses a new \ordersService\ authority check to determine if an order can be confirmed, replacing the previous dialog-based validation flow.
lib/features/map/presentation/components · high confidence
Map helpers migrate to generated assets and update Dart syntax
The map presentation helpers now load map styles and icons from generated asset code (MyAssets) instead of the previous static image constants, ensuring assets are bundled correctly via the code-gen pipeline. Additionally, the code has been updated to follow modern Dart conventions, including the removal of unnecessary 'await' keywords on synchronous-looking calls, the use of 'final' for immutable variables, and the adoption of 'ImageConfiguration.empty' for image loading.
lib/features/map/presentation/helpers · high confidence
Map infrastructure: stricter JSON parsing and optional cancellation tokens
The map feature's infrastructure layer now enforces stricter type safety when parsing JSON responses from the map API. DTOs for place autocomplete, details, and directions explicitly cast dynamic JSON values to their expected types (e.g., \double\, \int\, \String\, \Map\<String, dynamic\>\) during deserialization, reducing the risk of runtime type errors. Additionally, the \CancelToken\ parameter for place autocomplete, details, and directions requests has been moved to an optional named argument, allowing callers to omit cancellation logic if not needed.
lib/features/map/infrastructure · high confidence
Map screen UI and navigation behavior updates
The map screen now uses a consistent loading indicator (TitledLoadingIndicator) and displays toasts for location prompts without relying on theme-specific overlay styles. Upon successful order confirmation, the app navigates to the home route instead of simply popping the current screen. Additionally, local notifications for arrival are now handled via a dedicated notification service rather than a provider-based approach.
lib/features/map/presentation/screens · high confidence
Map search menu item adopts new styling system and removes Material wrapper
The MapSearchMenuItem widget now uses the centralized TextStyles system instead of the legacy CustomText component, updating how title and subtitle text are rendered. Additionally, the explicit Material widget wrapper has been removed, relying on the parent ListTile to provide the necessary material surface and interaction handling.
lib/features/map/presentation/widgets · high confidence
Map target location providers updated for Riverpod compatibility and cleaner API usage
The map feature's target location providers have been regenerated to align with the latest Riverpod generator standards, ensuring correct provider wiring for camera position, directions, geo-point, and marker state. Additionally, the map camera position now omits explicit bearing and tilt settings, allowing the map to use its default orientation, and the directions provider now uses a more concise API for handling optional results and repository calls.
_lib/features/map/presentation/providers/target\_location\providers · high confidence
Migrate theme state management from AppTheme to AppThemeMode
The theme provider now uses the \AppThemeMode\ type instead of the previous \AppTheme\ enum, simplifying the state model by removing the async dependency on \sharedPrefs\ during the build phase and switching to synchronous reads. This change updates the \AppThemeController\ and \currentAppThemeMode\ provider to handle theme mode directly, ensuring faster initialization and eliminating potential flickering at the splash screen by avoiding async waits for shared preferences restoration.
_lib/core/core\features/theme/presentation/providers · high confidence
Modernize Home Screen widgets and loading indicators
The Home Screen now uses the new \TitledLoadingIndicator\ component instead of the previous generic loading indicator, providing a consistent title for the 'determine location' state. Additionally, the screen widgets have been updated to use modern Flutter syntax (super.key) and migrated to the \responsive\_layouts\ module for better responsive behavior.
lib/features/home/presentation/screens · high confidence
Modernizes Android full-screen handling and app architecture
The app now uses a new FullScreenScaffold that detects whether the device supports edge-to-edge display; on older Android versions, it explicitly enables immersive mode to prevent system UI overlays. The root app widget has been migrated from PlatformApp to MaterialApp.router, adopting auto-generated localizations and a restoration scope for state recovery. Platform-specific widget branching has been removed in favor of standard Material widgets, and the navigation entry point now initializes an UncontrolledProviderScope with a pre-created container to improve provider stability.
lib · high confidence
Orders list now filters on-the-way deliveries by responsible user
The orders repository now restricts the list of orders with 'on the way' status so that they are visible only to the specific delivery person assigned to them. Previously, all upcoming and on-the-way orders were returned to any user; the implementation now checks the \deliveryId\ against the provided \userId\ before including an order in the stream. This change also updates the \getUpcomingOrders\ method signature to require a \userId\ argument and simplifies the repository's internal structure by injecting the Riverpod \Ref\ directly instead of holding a separate data source instance.
lib/features/home/infrastructure/repos · high confidence
Profile feature refactored to use Riverpod AsyncNotifiers and simplified UI components
The profile feature has been refactored to replace the previous event-driven state management with Riverpod AsyncNotifiers (ProfileDetailsState and UpdateProfileImageState), simplifying how profile updates and image changes are handled and propagated to the UI. The local data source for picking images has been removed and merged into the domain ProfileService, streamlining the repository layer. On the presentation side, platform-specific widget logic has been consolidated into Material-focused components, the custom text field wrapper has been simplified to use standard Flutter widgets, and styling has been updated to use the centralized TextStyles utility.
lib/features/profile · high confidence
Refactor Firebase error handling to support broader exception types and modern syntax
The Firebase error extension now applies to the base Object type instead of just Exception, allowing it to handle a wider range of error objects during network error conversion. Additionally, the internal switch-case logic for mapping Firebase Auth exceptions to server exceptions has been updated to use modern Dart switch expression syntax, improving code conciseness without changing the underlying error mapping behavior.
_lib/core/infrastructure/network/main\api/extensions · high confidence
Refactor TabItem enum to use enhanced methods and update icon sizing
The TabItem enum in the home shell presentation layer has been refactored to replace extension methods with enhanced enum methods, consolidating icon and label logic into the enum itself. The order of the profile and home tabs has been swapped, and the icon size constant has been updated from Sizes.bottomNavBarIconR22 to Sizes.navBarIconR22, reflecting a change in the underlying styling configuration.
_lib/features/home\shell/presentation/utils · high confidence
Refactor User profile details import and update SignInWithEmail model
The User domain model now imports ProfileDetails from the features/profile/domain directory instead of the previous value\_objects path, and the SignInWithEmail value object has been updated with internal notes regarding the use of separate value objects for validation. These changes reflect structural adjustments to how profile data is referenced and how authentication credentials are modeled within the domain layer.
lib/auth/domain · medium confidence
Refactor authentication providers to use Riverpod Notifiers
The authentication state management in the presentation layer has been refactored from an event-driven model using \Event\ classes and separate provider functions to a class-based \Notifier\ approach. Specifically, \SignInState\ and \SignOutState\ are now explicit \Notifier\ classes that expose \signIn\ and \signOut\ methods, replacing the previous \Event\-watching pattern. This change also updates the sign-in and sign-out flows to use the centralized \notificationServiceProvider\ for FCM topic subscriptions/unsubscriptions, replacing the previous direct \fcmProvider\ usage, and simplifies the sign-out error handling by suppressing errors during the async operation.
lib/auth/presentation/providers · high confidence
Refactor core UI widgets to use platform-aware components and generated assets
The presentation layer has been refactored to replace custom, platform-agnostic widgets with platform-aware components from the \flutter\_platform\_widgets\ library. Custom buttons (\CustomElevatedButton\, \CustomOutlinedButton\) and the app bar (\CustomAppBar\) now render native Material and Cupertino styles respectively, ensuring consistent look-and-feel across iOS and Android. Dialogs and loading indicators have been updated to use \PlatformAlertDialog\ and \PlatformCircularProgressIndicator\, while static assets are now accessed via the generated \MyAssets\ class instead of hardcoded paths. Additionally, the \CachedNetworkImage\ widget now uses a specific spare image URL for error states and includes an error listener for logging, and the \EmptyAppBar\ has been renamed to \StatusBarSpacer\ to better reflect its purpose.
lib/core/presentation/widgets · high confidence
Refactor delivery status provider and simplify map location providers
The delivery status feature now uses a class-based \UpdateDeliveryStatusController\ with an explicit \updateStatus\ method instead of the previous event-driven \UpdateDeliveryStatusEvent\ and \updateDeliveryStatusState\ providers, simplifying how status updates are triggered and managed. In the map feature, the \myLocationCameraPosition\ provider no longer sets fixed \bearing\ and \tilt\ values, allowing the camera to reflect natural device orientation, and minor formatting adjustments were applied to the marker icon provider.
_lib/features/home/presentation/providers/update\_delivery\_status\_provider, lib/features/map/presentation/providers/my\_location\providers · high confidence
Refactor home presentation utilities and remove obsolete dialog helper
The obsolete OrderDialogHelper utility class has been removed from the home presentation utils, consolidating dialog logic into the specific dialog components it previously wrapped. Additionally, the LocationError enum has been updated to use enhanced enum syntax with a const constructor, and its error text retrieval method now uses modern switch expression syntax, replacing the previous extension-based approach.
lib/features/home/presentation/utils · high confidence
Refactor home shell UI components to use Material 3 and modern routing APIs
The home shell presentation components have been updated to enforce Material 3 styling and adapt to the new navigation API. The bottom navigation bar now uses \PlatformNavBar\ with explicit \MaterialNavigationBarData\ and \CupertinoTabBarData\ configurations, replacing the previous custom \BottomNavBarComponent\ that relied on deprecated platform widget wrappers. The app bar has been renamed to \HomeShellAppBar\ and simplified by removing manual \PreferredSizeWidget\ implementations; it now uses \GoRouterState.of(context).routeLocation\ instead of the deprecated \GoRouter.of(context).location\ and \shellRouteContext.routerState.location\. Additionally, asset references have been migrated from the old \AppImages\ helper to the generated \MyAssets\ namespace, and the navigation rail now utilizes \AdaptiveScaffold.standardNavigationRail\ for responsive layouts.
_lib/features/home\shell/presentation/components · high confidence
Refactor location service and improve app initialization
The location service now checks for both 'whileInUse' and 'always' permissions when verifying while-in-use access, and uses centralized settings constants for location intervals and distances. The app initialization process now returns a ProviderContainer, warms up critical providers (androidDeviceInfo, sharedPrefs) to prevent UI flickering, and explicitly sets the system UI mode to edge-to-edge on iOS to ensure the notification bar is visible upon launch. Additionally, the logger is configured to use a new callback-based handler for root-level logs, and splash image precaching is delegated to a dedicated method.
lib/core/infrastructure/services · high confidence
Refactor map providers and update map controller logic
The map presentation layer has been refactored to improve state management and map behavior. The \MapConfirmOrderStatus\ provider now uses an explicit \confirmOrder\ method instead of an event-based state machine, simplifying the order confirmation flow. The \MapController\ has been updated to switch from \AppTheme\ to \AppThemeMode\ for applying map styles and now conditionally centers the map: it focuses on the target location bounds if a place is selected, otherwise it centers on the user's current location. Additionally, generated Riverpod provider files have been added for several map-related providers, and minor formatting and API argument order fixes were applied to autocomplete and place details calls.
lib/features/map/presentation/providers · high confidence
Refactor order authority logic and update domain models
The home feature's domain layer now enforces order proceeding authority by checking if the current user ID matches the order's delivery ID via the new OrdersService. This service is exposed as a Riverpod provider and relies on the delivery status update state. Additionally, the AppOrder model's equality logic was refined to exclude the deliveryGeoPoint from comparisons, and several domain classes (AppOrder, UpdateDeliveryGeoPoint, UpdateDeliveryStatus, Address) were regenerated with Freezed to support these changes.
lib/features/home/domain · high confidence
Refactor value validators and map constants for stricter typing
The \ValueValidators\ class in the core domain now uses \const\ for regex patterns and enforces \required String\ parameters in \checkPattern\, improving type safety and performance. Additionally, the map presentation constants have been updated to use integer literals instead of doubles for zoom, radius, padding, and distance values, and a comment formatting fix was applied.
lib/core/domain, lib/features/map/presentation/utils · high confidence
Refactored Google Maps error handling to use modern Dart syntax
The error extension in the Google Maps API infrastructure layer has been updated to use Dart's switch expression syntax and pattern matching features. This change simplifies the logic for mapping Dio errors and HTTP status codes to specific ServerException types, improving code readability and maintainability without altering the underlying error handling behavior.
_lib/core/infrastructure/network/google\_map\api/extensions · high confidence
Refactored UI components to use generated assets and modern styling
The presentation components in this area have been updated to replace legacy custom widgets (such as CustomText, CustomButton, and CustomIcon) with standard Flutter Material widgets (Text, ElevatedButton, Image) and a centralized styling system (TextStyles). Additionally, hardcoded image assets have been migrated to a generated asset registry (MyAssets), and several error and navigation components (NoInternetErrorComponent, RouteErrorComponent) have been introduced or updated to improve user feedback during network or routing failures.
lib/core/presentation/components · high confidence
Refactored app theming with edge-to-edge support and new color architecture
The theming system has been restructured to support modern Android edge-to-edge display modes, ensuring the system navigation bar behaves correctly on older Android versions (APIs 26-28) and allows hot reloading of theme colors. A new \AppColors\ abstraction introduces distinct light and dark palettes, replacing the previous theme implementation. Additionally, deprecated Flutter APIs such as \MaterialStatePropertyAll\ have been replaced with \WidgetStatePropertyAll\, and the codebase now prefers enhanced enum methods and Material widgets for root components.
_lib/core/core\features/theme/presentation/utils · high confidence
Refactored local storage and image picker error handling
The local infrastructure layer now uses Riverpod-generated providers for \SharedPreferencesFacade\ and \ImagePickerFacade\, replacing manual wiring. \SharedPreferencesFacade\ has been simplified to use Dart's pattern matching for type-safe data saving and restoring, removing the explicit \DataType\ enum. Error handling in both facades has been updated to preserve stack traces when converting exceptions to \CacheException\, ensuring more detailed debugging information is available when local storage or image picking operations fail.
lib/core/infrastructure/local · high confidence
Refactored network interceptors and connection checker for improved error handling and type safety
The network layer has been updated to improve reliability and debugging. The Google Maps error interceptor now correctly extracts and propagates error messages from backend responses (including 200 OK business errors) and standard HTTP errors, ensuring users see meaningful error details. The \DataConnectionChecker\ singleton logic was restructured to properly manage stream listeners, and its result classes now use named parameters for better clarity. Additionally, generated Riverpod provider files for \sessionTokenInterceptor\ and \networkInfo\ were added to support dependency injection, while legacy logging code was commented out to reduce noise.
_lib/core/infrastructure/network/google\_map\api/interceptors · high confidence
Refactored notification handling to prevent duplicate foreground sounds
The notification infrastructure has been restructured to centralize Firebase Cloud Messaging (FCM) and local notification logic, introducing a dedicated \NotificationService\ and Riverpod providers for message streams. This change specifically addresses a bug where foreground notifications triggered duplicate sounds on iOS by ensuring the app handles incoming FCM payloads via a custom local notification display rather than relying on FCM's automatic foreground presentation. The system now uses a unified \NotificationPayload\ model to manage notification data and routes user interactions through a new \NotificationResponseEvent\ state, ensuring consistent behavior across terminated, background, and foreground app states.
lib/core/infrastructure/notification · high confidence
Refactored platform-aware widgets and dialog sizing logic
The platform widget library has been updated to improve consistency and fix layout issues. The Material alert dialog now prioritizes insetPadding over preferred maxWidth to ensure proper spacing on narrow screens, addressing a known Flutter layout quirk. The icon system has been simplified by introducing a context-aware \platformIcons\ accessor that delegates to the \flutter\_platform\_widgets\ package, reducing manual platform checks. Additionally, the \PlatformRefreshIndicator\ now applies the app's custom loading indicator color, and the base widget class has been updated to use the non-nullable \super.key\ syntax and a simplified platform check.
_lib/core/presentation/widgets/platform\widgets · high confidence
Refactored system UI overlay handling and platform detection helpers
The system UI overlay configuration now supports Edge-to-Edge mode, allowing the status and navigation bars to render transparently with appropriate icon brightness based on the current theme. Platform detection logic has been expanded to explicitly identify mobile, desktop, and web devices, and the system theme getter now returns a dedicated theme mode enum. Additionally, internal helper utilities for date and number formatting have been updated to follow stricter linting standards.
lib/core/presentation/helpers · high confidence
Refactoring presentation utilities and fixing functional programming helpers
This change refactors the \lib/core/presentation/utils\ module by removing obsolete files (\dialogs.dart\, \location\_settings.dart\, \window\_size\_class.dart\) and updating the \Event\ class structure. It fixes a potential null-safety issue in \fp\_framework.dart\ by replacing \toOption()\ with \fpdart.Option.fromNullable()\ to correctly handle null values, and updates the Riverpod framework to import dialogs from the new \widgets\ location. Additionally, it cleans up \scroll\_behaviors.dart\ by removing the unused \DisableGlowScrollBehavior\ class and adding a TODO comment regarding Material 3 migration.
lib/core/presentation/utils · high confidence
Refactors settings screens to use standard Material widgets and updated styling
The Language and Settings screens have been updated to remove custom scroll behavior wrappers and platform-specific responsive builders, relying instead on standard Material widgets and a new responsive layout import. Additionally, the UI styling has been migrated from the legacy \Sizes\ and \CustomText\ helpers to the new \Styles\ module, and constructors have been updated to use the modern \super.key\ syntax.
lib/features/settings/presentation/screens · high confidence
Refined error handling, provider lifecycle, and Android edge-to-edge support
This update improves how the app handles errors, manages provider lifecycles, and supports modern Android UI patterns. For error display, the \AppErrorExtension\ now correctly retrieves cache error messages via \cacheErrorMessage\ instead of returning a generic unknown error, and server error handling has been refactored to use modern switch expressions. Provider lifecycle management is enhanced with a new \disposeDelay\ extension on \AutoDisposeRef\, allowing providers to remain active for a specified duration after losing listeners, while \cacheFor\ and \cancelToken\ methods are streamlined. On the UI side, a new \AndroidDeviceInfoX\ extension introduces \supportsEdgeToEdge\ to enable fullscreen splash screens on Android API 29+, and the \WidgetRefExtension\ now uses \popDialog\ for more accurate navigation state handling. Additionally, new \Future\ extensions (\suppressError\, \throwAllErrors\, \throwFirstError\) provide better control over asynchronous error propagation.
lib/core/presentation/extensions · high confidence
Reordering of ServerExceptionType enum values
The 'unknown' value in the ServerExceptionType enum has been moved from the first position to the end of the list. This reordering changes the implicit integer index of the enum values, which may affect any code relying on the specific numeric representation of these exception types.
lib/core/infrastructure/error · high confidence
Routing overhaul: typed routes, code generation, and role-based access control
The app's navigation system has been refactored to use GoRouter 9.0.0 with code-generated routes (app\_router.g.dart) and typed route definitions, replacing the previous manual StatefulShellRoute setup with TypedStatefulShellRoute. This change introduces a new RouteAuthority enum and route extensions to enforce role-based access control (unauthenticated, guest, user, admin) via a centralized redirect logic, ensuring users are automatically routed to login or home based on their authentication state. Additionally, the router now supports state restoration via restorationScopeId, handles navigation errors with a dedicated RouteErrorScreen, and simplifies the refresh mechanism by replacing the custom AppRouterRefreshListenable with a ValueNotifier. The NavigationService has also been updated to include a popDialog method for handling dialog dismissal.
lib/core/presentation/routing · high confidence
Settings UI modernized with Flutter 3.22+ APIs and unified styling
The settings screen components have been updated to use modern Flutter APIs and a centralized styling system. The theme toggle now uses the standard \Switch.adaptive\ widget instead of a custom platform switch, and the app theme model has shifted from \AppTheme\ to \AppThemeMode\ to align with current Flutter conventions. Additionally, all custom text widgets have been replaced with standard \Text\ widgets utilizing a new \TextStyles\ utility, and deprecated \MaterialStatePropertyAll\ has been swapped for \WidgetStatePropertyAll\ to ensure compatibility with recent framework versions.
lib/features/settings/presentation/components · high confidence
Sign-in screen adopts code-generated assets and simplified scrolling
The sign-in screen now uses code-generated asset references (MyAssets) instead of static image constants, ensuring assets are managed via the build system. The layout no longer wraps scrollable content in a custom ScrollConfiguration, relying on default scroll behavior, and switches from a platform-specific scaffold to a standard Material scaffold. Additionally, padding constants have been renamed (e.g., screenMargin to screenPadding) to reflect updated styling conventions.
lib/auth/presentation/screens · high confidence
Simplified user data clearing and refactored local data source
The authentication local data source now clears all cached user data instead of a single key, and also resets the app locale and theme preferences upon logout. The data source implementation was refactored to use the Riverpod \Ref\ for dependency injection, and the \getUserData\ method was changed from asynchronous to synchronous. Additionally, generated provider and serialization files were added for the local/remote data sources, repository, and user DTO.
lib/auth/infrastructure · high confidence
Simplifies home shell navigation and updates notification handling
The home shell screen now uses a standard Material Scaffold instead of platform-specific tab scaffolds, replacing the previous \PlatformTabScaffold\ with \PlatformAppBar\ and the new \HomeShellBottomNavBar\ and \HomeShellAppBar\ components. Navigation logic has been refactored to use \PopScope\ with \onPopInvokedWithResult\ to handle back-button behavior, and the internal state management for the selected tab has been simplified by removing the \useState\ wrapper in favor of reading the index directly from the navigation shell. Additionally, FCM notification handling has been migrated to use the new \notificationServiceProvider\ and \NotificationPayload\ types, and imports have been reorganized to reflect the move of services to the infrastructure layer.
_lib/features/home\shell/presentation/screens · high confidence
Simplifies offline and error screens by removing retry logic and updating navigation
The NoInternetScreen and RouteErrorScreen now handle back-navigation by redirecting to the splash screen via PopScope, replacing the previous WillPopScope behavior. The NoInternetScreen no longer checks for network connectivity or offers a retry action; instead, it displays a static NoInternetErrorComponent within a FullScreenScaffold, removing the dependency on network info providers and platform-specific scaffolds.
_lib/core/presentation/screens/no\_internet\screen · high confidence
Simplifies order cancellation flow and standardizes dialog styling
The order cancellation dialog now requires the caller to provide the note controller, removing internal state management and the separate note component, which simplifies the widget structure. The dialog's layout has been updated to use a constrained box instead of a fixed width, and the input field is now a standard Material TextFormField. Additionally, all dialogs in this area have migrated from custom text and button widgets to standard Flutter Material widgets with a centralized style system, and the order details dialog no longer includes a back button, relying on the system back gesture or navigation stack instead.
lib/features/home/presentation/components/dialogs · high confidence
Splash screen asset migration and layout simplification
The splash screen now uses code-generated asset references (MyAssets) instead of static image paths, ensuring assets are properly bundled and available. The layout has been simplified by removing the ScrollConfiguration wrapper and using a standard SingleChildScrollView, which may affect scroll behavior on older Android versions. Additionally, the screen now supports an immersive mode setting for older Android devices via a static flag, and the scaffold has been updated to FullScreenScaffold with Material styling.
_lib/core/presentation/screens/splash\screen · high confidence
Switch to very\_good\_analysis lints and update configuration files
The project's static analysis configuration has been migrated from flutter\_lints to the very\_good\_analysis package, introducing stricter linting rules and enabling riverpod\_lint via custom\_lint. Generated files (freezed, g, mapper, gen, gr) are now explicitly marked as linguist-generated in .gitattributes and excluded from analysis to reduce noise. Configuration for launcher icons and native splash screens has been added via dedicated YAML files, and API keys are now managed through a configs folder with dart-define injection rather than hardcoded placeholders. Additionally, the MIT license has been added to the repository.
(repo-wide) · high confidence
Synchronous theme retrieval and generated provider wiring
The theme infrastructure now retrieves the current app theme synchronously via the renamed \getAppThemeMode\ method, removing the previous asynchronous \getAppTheme\ call and associated \DataType\ arguments from the local data source. This change simplifies the API for consumers who need immediate access to the theme setting. Additionally, generated Riverpod provider files (\theme\_local\_data\_source.g.dart\ and \theme\_repo.g.dart\) have been committed to the repository, ensuring that the \themeLocalDataSourceProvider\ and \themeRepoProvider\ are available for dependency injection without requiring a build step to generate them at runtime.
_lib/core/core\features/theme/infrastructure · high confidence
Unified styling system with smoother font switching
The presentation styles have been refactored into a single source of truth (styles.dart) with split parts for text, sizes, and borders. This change consolidates font families and weights, removes the legacy AppImages constants file, and updates the API for accessing screen metrics (MediaQueryData.fromWindow to fromView). Crucially, text styles now explicitly resolve the font family from the current localization context, which eliminates the slight visual delay users previously experienced when switching the app language.
lib/core/presentation/styles · high confidence
Updated notification payload route location
The data payload sent in new order notifications now uses the key "routeLocation" with the value "/home" instead of the previous "tabName" with the value "home". This change ensures that clients receiving these notifications will navigate to the correct route path upon interaction.
functions · high confidence
iOS app now supports configurable API keys and native notifications
The iOS build now reads the Google Maps API key from build-time defines (DART\_DEFINES) instead of using a hardcoded placeholder, allowing keys to be injected securely during compilation. Additionally, the app initializes the flutter\_local\_notifications plugin and registers the user notification center delegate, enabling push notifications to function correctly. The launch screen has been updated to hide the status bar by default and simplify background image scaling, while the Xcode project has been upgraded to version 14.3.
ios · high confidence
Test coverage
Update test utilities for generated localizations and Riverpod API changes; Updated and removed tests for Google Maps API network infrastructure; Updated authentication infrastructure tests; Updated authentication provider tests to reflect infrastructure and state model changes; Updated fixture reader formatting; Updated tests for SharedPreferencesFacade and local error handling; Updated tests for error handling, platform detection, and navigation observers; Updated tests for locale and theme feature refactoring.
Dependencies
Major dependency upgrades and platform configuration updates
This release upgrades core dependencies and build configurations to support newer platform standards. The Flutter SDK constraint is raised to 3.1.0, and key libraries including go\_router (up to 12.1.1), Firebase services (e.g., cloud\_firestore to 4.14.0), and Riverpod are updated to their latest compatible versions. On the Android side, the Gradle plugin is upgraded to 7.3.1, and the app is now configured to accept the Google Maps API key via dart-defines for secure injection. Additionally, the macOS platform is now supported with a new Podfile, and the iOS/Android native dependencies (abseil) are updated to version 1.20220623.0.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 62 → 70 (+8.3)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 95 (-2.8)
- Architecture 100 → 92 (-7.6)
- Maturity 50 → 64 (+14.3)
- Readiness 57 → 63 (+6.7)
- Security 71 → 76 (+5.8)
- Domain Modelling 100 → 100 (+0.0)
Resolved (28)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (functions/package-lock.json)
- Critical CVE: [GHSA redacted] (functions/package-lock.json)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Low CVE: [GHSA redacted] (functions/package-lock.json)
- Low CVE: [GHSA redacted] (functions/package-lock.json)
- Low CVE: [GHSA redacted] (functions/package-lock.json)
- Low CVE: [GHSA redacted] (functions/package-lock.json)
- Medium CVE: [GHSA redacted] (functions/package-lock.json)
- Medium CVE: [GHSA redacted] (functions/package-lock.json)
- …and 8 more
New (58)
- AppOrder.== (cognitive 28) (lib/features/home/domain/order.dart)
- AppOrder.== (cyclomatic 29) (lib/features/home/domain/order.dart)
- CardItemComponent.build (cyclomatic 17) (lib/features/home/presentation/components/card_item_component.dart)
- Critical CVE: [GHSA redacted] (functions/package-lock.json)
- Critical CVE: [GHSA redacted] (functions/package-lock.json)
- Critical CVE: [GHSA redacted] (functions/package-lock.json)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (lib/core/presentation/widgets/legacy/platform_widgets/platform_elevated_button.dart)
- Duplicated block (11 lines × 2) (lib/core/core_features/locale/infrastructure/data_sources/locale_local_data_source.dart)
- Duplicated block (11–13 lines × 2) (lib/features/home/presentation/screens/home_screen/home_screen_compact.dart)
- Duplicated block (16 lines × 2) (lib/core/core_features/theme/presentation/utils/app_colors_dark.dart)
- Duplicated block (18–19 lines × 3) (lib/core/presentation/widgets/custom_elevated_button.dart)
- Duplicated block (20 lines × 2) (lib/core/presentation/widgets/legacy/platform_widgets/platform_text_form_field.dart)
- Duplicated block (21 lines × 2) (lib/auth/presentation/screens/sign_in_screen/sign_in_screen_compact.dart)
- Duplicated block (24 lines × 2) (lib/core/presentation/widgets/custom_elevated_button.dart)
- Duplicated block (8 lines × 2) (lib/core/infrastructure/local/image_picker_facade.dart)
- Duplicated block (8 lines × 3) (lib/core/infrastructure/network/google_map_api/api_callers/google_map_api_facade.dart)
- Duplicated block (8 lines × 4) (lib/features/home/presentation/screens/home_screen/home_screen.dart)
- High CVE: [GHSA redacted] (functions/package-lock.json)
- …and 38 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
AhmedLSayed9/deliverzler 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 644ee68715c7ec701dfa4ed59ecfb3eb167ec88b — 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.