Skip to content
CAI
Software that uses CAICheck a score

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

CAI band scale
CAI trend line
CAI lens gauges

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.