mo7amedaliEbaid/movies_riverpod
55.6
Adequate · 21 September 2026
6.1k
lines of production code
Dart
primary language
4
measurements over time
What this system is
This system is a Flutter-based movie information application that provides users with browsing, search, and detail views for films. The codebase has been refactored to use a clean architecture with separate domain and data layers, leveraging Riverpod for state management and Dart 3.0 interface classes for modularity. It supports responsive layouts for mobile and desktop devices, with specific features for movies, bookmarks, and notifications, while removing legacy code and unsupported desktop platforms.
Architecture
Restructures core module into a dedicated lib/core directory
The application's core logic, utilities, and shared widgets have been reorganized from the root lib directory (e.g., lib/app, lib/shared) into a structured lib/core hierarchy. This refactoring includes moving app constants, strings, themes, and network services into specific subdirectories such as lib/core/app, lib/core/network, and lib/core/widgets. Additionally, Dart's new 'interface' and 'sealed' class modifiers have been applied to several core classes, and the app's responsive layout logic has been centralized in a new 'lib/core/responsive' module to support mobile, tablet, and desktop views.
lib/core · high confidence
Behavioural changes
Linux application renamed to 'movies\_app'
The Linux build configuration and application title have been updated. The executable and application ID were changed from 'movies\_riverpod' to 'furniture\_app' in the CMakeLists.txt, and the window title in my\_application.cc was updated to 'movies\_app'.
linux · medium confidence
Migrate to Dart 3.0 interface classes and restructure model packages
The application has been updated to use Dart 3.0's 'interface class' syntax, changing all model classes from 'class' to 'interface class' (e.g., Cast, Genre, Movie, MovieDetail). Additionally, the codebase has been reorganized: several model files (Cast, Genre, Movie, etc.) have been moved into dedicated subdirectories (e.g., lib/models/cast/cast.dart), and import paths have been updated accordingly. The remote data source for bookmarks has been removed, and the local data source has been updated to use the new model paths.
lib/features/bookmarks, lib/models · high confidence
Refactor movie detail feature for responsive design and cleaner architecture
The movie detail feature has been refactored to support responsive layouts, introducing separate \MobileMovieDetailBody\ and \DesktopMovieDetailBody\ widgets, with the screen conditionally rendering the mobile layout for both mobile and desktop breakpoints. The codebase has been reorganized to move shared utilities and models into a \core\ directory, and all use-case and repository classes have been converted to \interface class\ types to enforce interface implementation. Additionally, the horizontal cast list now explicitly configures touch and mouse drag devices for scrolling.
_lib/features/movie\detail · high confidence
Refactor notifications feature to use core modules and support desktop layouts
The notifications feature has been refactored to import shared utilities (AppDimensions, AppColors, BuildContext extensions) from the core module rather than the shared module, and the repository implementation is now an interface class. A new desktop-specific notification screen is introduced as a side sheet, while the existing mobile bottom sheet is renamed and updated to handle responsive constraints. Additionally, the remote data source has been removed entirely.
lib/features/notifications · high confidence
Refactored app entry point and import paths
The application's entry point in lib/main.dart was refactored, including the removal of device orientation and status bar configuration code, and the reorganization of import paths for core components and observers.
lib · medium confidence
Refactored map feature to use clean architecture and Riverpod
The map feature in lib/features/map has been refactored to adopt a clean architecture with separate domain and data layers, and the presentation layer now uses Riverpod for state management. The previous implementation, which relied on a StatefulWidget with direct Google Maps integration, has been replaced by a Provider-based approach that fetches location data asynchronously. This change shifts the map from a self-contained widget to a more modular structure where location data is managed via a FutureProvider, improving separation of concerns and testability.
lib/features/map · medium confidence
Removal of legacy app constants, strings, and shared widgets
The application has removed several legacy files that previously held app constants, string resources, and shared UI components. Specifically, the \AppConstants\ and \AppStrings\ classes, along with the \SeeMore\ widget and \message\_queue\ utility, have been deleted. This cleanup removes unused or deprecated code from the app's core and shared modules.
lib/app · high confidence
Removed home screen state management providers
The state management providers for movies and genres (MovieNotifier, GenreNotifier) and their associated state classes have been removed from the home feature. This eliminates the previous implementation of the home screen's state management, likely as part of a broader refactoring or migration of the home screen's logic.
lib/features/home · medium confidence
Removed macOS and Windows native platform code
The native application code for macOS and Windows has been removed. This includes the Xcode project files, Swift/C++ runner code, CMake build configurations, and associated resources, indicating the application no longer supports building for these desktop platforms.
macos, windows · high confidence
Renamed 'Home' feature to 'Movies' in the dependency injection container
The dependency injection setup in lib/di/Injector.dart has been refactored to rename the 'Home' feature to 'Movies'. All related data sources, repositories, and use cases have been updated from the 'Home' namespace to the 'Movies' namespace, including the registration of MoviesLocalDataSource, MoviesRemoteDataSource, MoviesRepository, and associated use cases like FetchAndCacheGenreUseCase.
lib/di · high confidence
Restructures movies feature with dedicated screens and state management
The movies feature has been restructured to include dedicated screens for trending, upcoming, and search functionality, each wired to specific state notifiers (e.g., trendingMoviesStateNotifier, upcomingMoviesStateNotifier). The home screen now renders distinct desktop and mobile widgets for popular and now-showing movies, while the root navigation is updated to include these new screens. Additionally, the underlying data layer has been refactored to support a search endpoint, and the codebase has been reorganized to separate movie-specific logic from the previous home-centric structure.
lib/features/movies · medium confidence
Dependencies
Updated Flutter and Dart dependencies; added search bar and Isar libraries
The project's dependency graph has been updated, including upgrades to build tools like build\_runner and cached\_network\_image, and the addition of the anim\_search\_bar package. Several previously declared dependencies (such as firebase\_core, event\_bus\_plus, and path\_provider) have been removed from pubspec.yaml, while new assets for cinemas and markers have been added to the Flutter configuration.
(dependencies) · medium 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 44 → 56 (+11.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 97 (-3.0)
- Architecture 100 → 97 (-3.4)
- Maturity 25 → 54 (+29.2)
- Readiness 24 → 33 (+9.1)
- Security 87 → 90 (+3.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (6)
- 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
- Test reliability not included
- complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (22)
- 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/features/movie_detail/presentation/provider/state/casts_notifier.dart)
- Duplicated block (11–12 lines × 2) (lib/features/movies/presentation/widgets/custom_movie_card.dart)
- Duplicated block (14 lines × 3) (lib/features/movies/presentation/widgets/desktop_popular_movies.dart)
- Duplicated block (15 lines × 2) (lib/features/movies/presentation/widgets/mobile_trending_movies.dart)
- Duplicated block (163 lines × 2) (lib/features/movie_detail/presentation/widget/desktop_movie_detail_body.dart)
- Duplicated block (18–26 lines × 2) (lib/features/movies/presentation/widgets/shimmer/movies_vertical_shimmer.dart)
- Duplicated block (24 lines × 2) (lib/features/movies/presentation/widgets/desktop_trending_movies.dart)
- Duplicated block (46–47 lines × 2) (lib/features/movies/presentation/widgets/custom_movie_card.dart)
- Duplicated block (9–10 lines × 3) (lib/features/movies/presentation/widgets/mobile_popular_movies.dart)
- Low cohesion: DioNetworkService (LCOM4 5) (lib/core/network/dio_network_service.dart)
- Low cohesion: MovieDetailNotifier (LCOM4 5) (lib/features/movie_detail/presentation/provider/state/movie_detail_notifier.dart)
- Low: security finding (details withheld)
- MethodTooLong: DesktopMovieDetailBody.build (lib/features/movie_detail/presentation/widget/desktop_movie_detail_body.dart)
- MethodTooLong: MobileMovieDetailBody.build (lib/features/movie_detail/presentation/widget/mobile_movie_detail_body.dart)
- No ADRs found
- TodoComment (lib/core/widgets/app_bar.dart)
- TodoComment (lib/features/movie_detail/presentation/widget/desktop_movie_detail_body.dart)
- …and 2 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/movies_riverpod 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 d39da2673c5952da50131dde4bb37b3ef44fa5da — 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.