Iamzaryab/Flutter-Movie-App-with-Clean-Architecture-and-RiverPod-State-Management
55.3
Adequate · 21 September 2026
3.7k
lines of production code
Dart
primary language
4
measurements over time
What this system is
FilmKu is a cross-platform Flutter movie application that retrieves film data from the TMDB API and presents it through a clean architecture with optional Riverpod or Bloc state management. The system enables users to browse movies, view detailed cast and genre information, and manage a local bookmark list, while also supporting offline access via Isar database caching. Additionally, it provides a local notification management interface and maintains platform support for iOS, macOS, and Linux.
Features
Added Isar database plugin support to Linux build
The Linux build now includes the Isar Flutter Libraries plugin. This change registers the IsarFlutterLibsPlugin within the Flutter plugin registry and adds isar\_flutter\_libs to the list of plugins in the CMake configuration, enabling the use of the Isar database on Linux.
linux · high confidence
Added local data models for cast, genres, and movies
The app now includes local persistence models for movie metadata, allowing cast, genre, and movie collection data to be stored and queried locally via Isar. New \Cast\ and \Genre\ embedded models define the structure for individual items, while \Casts\, \Genres\, and \Movies\ collection models manage lists of these items, enabling offline access to this content.
lib/models, lib/routes · high confidence
Added local notifications feature with bottom sheet UI
Users can now view and manage local notifications via a bottom sheet. The feature introduces a \NotificationModel\ (storing title, message, and a positive flag) persisted locally using Isar. The UI displays notifications in a scrollable list, differentiating items by color based on the 'positive' flag, and includes a 'Clear All' action to remove stored notifications. The implementation follows a clean architecture with local data sources, repository, use cases, and Riverpod state management.
lib/features/notifications · high confidence
Initial app foundation: theming, navigation, and shared utilities
This change introduces the core structural components for the FilmKu application. It establishes a complete theming system with light and dark modes, including color palettes, text styles, and theme providers that persist user preferences. It adds the primary navigation widgets: a custom app bar with a drawer trigger, a bottom navigation bar, and a side drawer for switching themes. Additionally, it implements shared utilities such as a network service layer using Dio, local storage abstractions (Isar and SharedPreferences), a message queue for UI notifications, and reusable UI widgets like genre chips, rating bars, and skeleton loaders.
lib/shared · high confidence
Initial release of FilmKu movie app with clean architecture and dual state management
This commit introduces the FilmKu Flutter movie application, structured around clean architecture principles with distinct data, domain, and presentation layers. The app leverages the TMDB API for movie data and offers two state management approaches: Riverpod (on the master branch) and Bloc (on the bloc branch). Key features include browsing movies by popularity and ratings, unlimited scrolling, detailed movie information, favorites, responsive design, offline access to recently viewed movies, and loading animations. The project uses get\_it for dependency injection, dio for networking, Isar for local storage, and various libraries like freezed, go\_router, and shimmer. Configuration includes a new MIT license, a flutter\_native\_splash.yaml for splash screen customization, updated .gitignore, and analysis\_options.yaml excluding generated files.
(repo-wide) · high confidence
Introduce local caching for Home and Bookmark features
The app now supports offline access and faster load times for the Home and Bookmarks sections by introducing a local data layer. The Home feature caches fetched movies and genres locally using Isar, automatically falling back to cached data when the network is unavailable. Similarly, the Bookmarks feature now stores saved movies locally, allowing users to view their list even without an internet connection.
lib/features/home · high confidence
MacOS platform support added for the filmku app
The macOS target is now available for the filmku application. This change introduces the complete Xcode project structure, including the Runner target, build configurations, and entitlements for sandboxing and network access. It also registers key Flutter plugins—Firebase Core, Firebase Remote Config, Isar, Path Provider, Shared Preferences, and Sqflite—ensuring these features function correctly on macOS. A basic test suite is included to support future development.
macos · high confidence
New movie detail screen with bookmarking and cast display
Users can now view a dedicated movie detail page that fetches movie information and cast lists from remote APIs while persisting bookmark actions locally. The screen displays the movie backdrop, title, rating, genres, and an overview, along with a horizontal list of cast members. A heart icon allows users to add or remove bookmarks, with the state persisted via a local database and reflected in the UI.
_lib/features/movie\detail · high confidence
Architecture
Centralized dependency injection setup for core features
The application now uses a centralized dependency injection configuration in \lib/di/Injector.dart\ to wire up services, data sources, repositories, and use cases for the Home, Movie Detail, Bookmarks, and Notifications features. This change establishes the runtime bindings for local and remote data sources, repository implementations, and specific domain use cases (such as fetching movies, managing bookmarks, and handling notifications), ensuring that these components are correctly instantiated and available throughout the app.
lib/di · high confidence
Behavioural changes
Application initialization refactored to support dependency injection and environment configuration
The app entry point has been replaced with a structured initialization flow that loads environment variables from a .env file, sets up a dependency injection container (singletons, data sources, repositories, and use cases), and restricts device orientation to portrait modes. The application now runs within a Riverpod ProviderScope with custom observers, replacing the previous default Flutter demo structure.
lib · high confidence
iOS project upgraded to Xcode 15.1 with CocoaPods and modern app lifecycle support
The iOS project has been upgraded to target Xcode 15.1, enabling support for newer iOS features and improved build stability. The configuration now integrates CocoaPods, adding framework embedding and dependency management phases to the build process. The app lifecycle has been modernized to use the Scene-based architecture (UIWindowScene) and the implicit engine delegate, ensuring compatibility with current iOS standards. Additionally, the launch screen now supports dark mode via separate background assets, and the minimum iOS deployment target has been removed from the framework info plist, relying on the workspace configuration instead.
ios · high confidence
Test coverage
Removal of default Flutter widget smoke test
The default widget test file (test/widget\_test.dart) has been removed from the project. This test previously verified the basic functionality of the main application component, specifically checking that a counter widget initializes at zero and increments correctly upon interaction. Its removal indicates that this specific smoke test is no longer part of the test suite.
test · high confidence
Dependencies
Initial project setup with Flutter dependencies and platform configuration
This change establishes the foundational configuration for the Flutter application. It introduces iOS and macOS CocoaPods manifests (Podfile and Podfile.lock) targeting iOS 13.0 and macOS 10.15, respectively, and configures Firebase Core and Remote SDKs. The Dart dependency manifest (pubspec.yaml) is updated to include a comprehensive set of libraries for state management (Riverpod), routing (GoRouter, AutoRoute), networking (Dio), data persistence (Isar, Shared Preferences), and UI enhancements (CachedNetworkImage, Shimmer, SVG). Additionally, the project now includes specific asset directories (images, .env) and custom fonts (MerriWeather, Mulish).
(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 54 → 55 (+1.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 98 (-1.5)
- Architecture 100 → 95 (-5.3)
- Maturity 59 → 63 (+4.2)
- Readiness 24 → 26 (+1.4)
- Security 97 → 98 (+0.8)
- Domain Modelling 100 → 100 (+0.0)
Resolved (9)
- 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
- The README lists required font files but does not explain how to add new fonts (e.g. via pub add) or what happens when the fonts are removed. (fonts/README.md)
- complexity unreadable for .dart, .kt, .swift — churn × complexity hotspots could not be measured
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- single-maintainer — knowledge-concentration (bus factor) risk
New (11)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no contributor guidance (README.md)
- 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 (18–26 lines × 2) (lib/features/home/presentation/widgets/shimmer/now_showing_shimmer.dart)
- Leaked secret: high-entropy-secret (lib/app/app_configs.dart)
- Low cohesion: DioNetworkService (LCOM4 5) (lib/shared/network/dio_network_service.dart)
- Low cohesion: MovieDetailNotifier (LCOM4 5) (lib/features/movie_detail/presentation/provider/state/movie_detail_notifier.dart)
- MethodTooLong: MovieDetailBody.build (lib/features/movie_detail/presentation/widget/movie_detail_body.dart)
- No ADRs found
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Iamzaryab/Flutter-Movie-App-with-Clean-Architecture-and-RiverPod-State-Management 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 6c1c25b5df3c251001c87da2f843d792789cda30 — 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.