Skip to content
CAI
Software that uses CAICheck a score

CodandoTV/Netflix-Android

56.5

Adequate · 21 September 2026

5.2k

lines of production code

Kotlin

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is an Android streaming application built with Jetpack Compose and Koin, designed to browse, search, and watch video content. The system provides a centralized navigation structure with a bottom bar for Home, Games, News, and Downloads, alongside a splash screen and profile picker. Users can view detailed information about streams, manage local favorites, and perform movie searches. The architecture is modular, separating core networking, local storage, and feature-specific logic into distinct modules.

Features

Add data models for streams and genres

New Kotlin data classes are introduced to represent API responses for streams and genres. The \ListStreamResponse\ and \StreamResponse\ classes map the list of streams with fields like id, title, overview, and optional poster path, while \GenresResponse\ and \GenreResponse\ handle genre data, enabling the app to parse and display stream and genre information from the backend.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/data/model · high confidence

Add detail screen for streams

A new detail screen has been introduced for the streams feature, allowing users to view comprehensive information about a specific stream. The implementation includes a new ViewModel (DetailStreamViewModel) that manages the UI state and handles data loading, alongside a Compose-based UI (DetailStreamsScreen) that displays the stream's title, release year, overview, and action buttons. The screen also supports navigation to a search screen and includes a custom view for sharing content.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/presentation/screens · high confidence

Added bottom navigation bar with Home, Games, News, and Downloads tabs

Users now have access to a new bottom navigation bar at the bottom of the screen, allowing them to switch between Home, Games, News, and Downloads sections. This UI component is built using Jetpack Compose and includes the necessary route definitions, navigation helpers, and localized string resources to support this new navigation structure.

core-navigation · high confidence

Introduced new data-layer components to support searching for movies and retrieving popular movie lists. This includes API service interfaces for the movie search and popular endpoints, data sources to fetch data from the network, repositories to abstract the data source, and a response model to parse the JSON payload. These changes enable the application to query movie titles, overviews, and poster paths via the underlying network layer.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/data · high confidence

Added domain models and use cases for the streams list feature

Introduced new domain-layer components to support the streams list feature. This includes domain models for Genre, HighlightBanner, and Stream, along with a ListStream aggregate. To facilitate data flow, new use cases (GetGenresUseCase, GetTopRatedStream, ListStreamUseCase) were added, each wired via Koin's @Factory annotation. Additionally, a ListStreamMapper was added to convert API response models into domain models, and a ListStreamAnalytics interface was created for tracking.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/domain · high confidence

Added navigation route for the stream detail screen

A new navigation entry for the stream detail screen has been added. This change registers the 'detail' route in the navigation graph, allowing users to access the detailed view of a specific stream. The implementation includes the necessary Koin dependency injection for the ViewModel and sets up the navigation controller to handle the transition to the detail screen.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/presentation/navigation · high confidence

Added repository and service layer for movie detail and video streams

Introduced the DetailStreamRepository and DetailStreamService interfaces and their implementation to fetch movie details and video streams. The repository manages local storage operations for favorite lists, including methods to insert, delete, and check if a movie is a favorite, while the service layer handles network requests for movie and video stream data.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/data · medium confidence

Added search UI components for the streams feature

New Compose widgets were added to the search presentation layer: SearchCarousel for displaying paginated search results in a scrollable list, SearchStreamCard for individual item display with image and title, and SearchStreams which provides the top bar with a search text field, back navigation, and icon buttons. These components enable users to enter search queries, view results, and navigate to details.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/presentation/widgets · high confidence

Added splash screen with animated logo and auto-navigation to home

A new splash screen has been introduced to the app. It displays a Lottie animation of the logo on a black background. Once the animation completes, the app automatically navigates the user to the home screen. This change establishes the initial user entry point and the transition from the splash state to the main application.

app/src/main/java/com/codandotv/streamplayerapp/splah · high confidence

Centralized navigation graph for app screens

The app now uses a centralized NavigationGraph composable that registers routes for the splash screen, stream list, search, detail, and profile picker screens, while also providing placeholder routes for bottom navigation items (games, news, scenes, downloads) that currently display a generic example screen.

app/src/main/java/com/codandotv/streamplayerapp/navigation · medium confidence

Initial project documentation and licensing added

The repository now includes comprehensive documentation and legal files to support community contribution and usage. This includes a main README in English and Portuguese (Brazil) explaining the project's goals, technology stack (Flow, Compose, Koin, etc.), and how to contribute. Additionally, dedicated files for contributors (CONTRIBUTOR\_PROJECT.md) and wiki usage (CONTRIBUTOR\_WIKI.md) provide step-by-step guides for setting up the development environment and submitting changes. The project is now licensed under the Apache License 2.0, and the Gradle wrapper scripts have been updated to improve POSIX compliance and error handling.

(repo-wide) · high confidence

Introduce core-shared module with utility extensions and dispatcher qualifier

The core-shared module has been added to the project, providing foundational utilities for the application. This includes a Koin qualifier for the IO dispatcher, string extension functions, and URI handling utilities for image processing. Additionally, standard Android manifest permissions and ProGuard rules have been configured for the new module.

core-shared · medium confidence

Introduce local storage for favorite movies

Added a new local storage module that uses Room to persist favorite movies. Users can now have their favorite movies stored locally on the device, with the ability to add, retrieve, and remove favorites from the database.

core-local-storage · high confidence

Introduce navigation graph for the list streams feature

The list streams feature now includes a dedicated navigation graph that registers the list screen and manages transitions to the detail, profile picker, and search screens. The navigation setup uses Koin's \rememberKoinModules\ to ensure the list module is loaded only once, improving lifecycle handling.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/presentation/navigation · high confidence

Introduce new ListStreams screen with highlight banner and genre carousels

A new ListStreams screen has been added to the app, featuring a prominent highlight banner and a list of genre-based content carousels. The implementation includes a dedicated ViewModel (ListStreamViewModel) that aggregates data from use cases to drive the UI state, and a Compose-based screen (ListStreamsScreen) that renders the banner and carousels within a Scaffold layout. This change adds the presentation layer for the main list view, including the state management and UI components for displaying featured content and genre-specific streams.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/presentation/screens · high confidence

Introduce new search screen with movie listing and navigation

The search feature now includes a dedicated SearchScreen that displays a list of movies, supporting both general and specific search queries. Users can search for movies, view results in a scrollable list, and navigate to a detail screen. The screen handles loading, error, and empty states, and includes a top bar for search input and navigation back functionality.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/presentation/screens · high confidence

Introduce paginated movie listing with new repository and data layer

The app now supports paginated loading of movies by genre, implemented via a new ListStreamRepository and ListStreamService in the data layer. Users will experience smoother scrolling through movie lists, as the app fetches and displays content in pages rather than all at once. The implementation includes a StreamDataSource for handling page requests and a ListStreamService to interact with the backend API for retrieving movies and genres.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/data · high confidence

Introduce profile picker screen with animated profile selection

Adds a new profile picker feature that allows users to select a profile from a grid of options. The implementation includes a new \ProfilePickerStreamScreen\ with animations for selecting and centering a profile image, backed by a \ProfilePickerStreamViewModel\ and Koin dependency injection. The feature fetches profile data via a new \ProfilePickerStreamService\ and uses a \ProfilePickerStreamUseCase\ to handle business logic and screen size calculations.

feature-profile · high confidence

Introduce shared UI components for theming, video playback, and sharing

The core-shared-ui module now provides a reusable UI layer for the app. This includes a Compose-based theme system (StreamPlayerTheme) that manages light and dark color schemes, a YouTube-based PlayerComponent for video playback, a StreamPlayerTopBar for navigation and profile display, and a SharingStreamCustomView that enables content sharing via WhatsApp, SMS, and Instagram. Additionally, shared resources such as color definitions, sharing utilities, and vector drawables are added to support these features.

core-shared-ui · high confidence

Introduces a new core-networking module with a custom Retrofit call adapter and structured error handling

A new core-networking module has been added to the application, providing a foundational networking layer. This includes a custom Retrofit CallAdapter (NetworkResponseAdapterFactory) that wraps HTTP responses into a unified NetworkResponse type, enabling consistent handling of success and error states. The module also introduces a sealed Failure class to categorize network and API errors (e.g., NetworkError, ServerError, ClientException) and provides Koin dependency injection setup for the network client, including authentication and logging interceptors. Additionally, utility extensions are provided to convert NetworkResponse to Kotlin Flows or Result types, facilitating reactive error handling in the rest of the app.

core-networking · high confidence

Introduction of a ContentType enum for content categorization

A new ContentType enum has been added to the core package, defining two content types: SHOW and FILM. Each type is associated with string resources for singular and plural names, enabling the application to categorize and display content in the list feature.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/core · high confidence

New build-logic extension utilities for Android and Compose configuration

The build-logic module introduces new Kotlin extension functions to standardize Android project setup. CommonExtensions.kt provides helpers to configure Java 17 compilation, Android default configurations (SDK, instrumentation), and Jetpack Compose integration via version catalogs. Additionally, new utility files (DependecyHandlerExtensions.kt and VersionCatalog.kt) add a Dokka plugin dependency handler and convenience methods for accessing library versions and bundles from the Gradle version catalog.

build-logic/src/main/java/extensions · high confidence

New detail screen widgets for stream content

The app now includes a set of new UI components for the stream detail screen, including a toolbar with back, search, and profile actions, a header row, an image preview with a play overlay, action buttons for sharing and downloading, and an options row for adding to favorites and sharing. These widgets provide the visual structure and interactive elements for viewing and interacting with stream details.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/presentation/widget · high confidence

New domain models and use cases for the stream detail feature

Added new domain-layer files for the stream detail feature, including the \DetailStream\ data class and \VideoStream\ model. Introduced mappers to convert API responses into domain models and to persist movie data locally. Implemented \DetailStreamUseCase\ to handle fetching movie details and toggling favorites (inserting or removing from the local list), and \VideoStreamsUseCase\ to retrieve available video streams.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/domain · high confidence

Added new Compose UI components for the streams list feature: a HighlightBanner for displaying featured content with a background gradient and action buttons, a StreamsCard for individual item display, and a StreamsCarousel that renders a horizontal, paginated list of these cards. These widgets introduce the visual structure for the list screen, including pagination support via Paging 3 and navigation callbacks to a detail screen.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/presentation/widgets · high confidence

The app now supports searching for movies and retrieving a list of popular movies. This change introduces the domain-layer use cases (SearchUseCase and MostPopularMoviesUseCase) and a mapper for search results, enabling the UI to fetch and display movie search results and a popular movies list.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/domain · high confidence

Search feature dependency injection module added

A new Koin module (SearchModule) was added to the search feature, wiring up ViewModels, use cases (SearchUseCase, MostPopularMoviesUseCase), repositories, and data sources for both general search and popular movies functionality.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/di · high confidence

Behavioural changes

Added Android CI pipeline with Detekt linting

A new Fastfile has been added to configure the Android build pipeline. The configuration defines a 'ci' lane that orchestrates linting, testing, and build steps. Specifically, the 'lint' lane executes the 'detekt' Gradle task, integrating static code analysis into the continuous integration process.

fastlane · high confidence

Added Koin dependency injection for the stream detail feature

The application now uses Koin for dependency injection in the stream detail module. This change introduces a new \DetailStreamModule\ that configures the \DetailStreamViewModel\, \DetailStreamUseCase\, \VideoStreamsUseCase\, and \DetailStreamRepository\ as Koin singletons or factories, enabling the feature to retrieve data via Retrofit and a local DAO.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/di · medium confidence

Added ProGuard and build configuration files for the feature-list-streams module

The feature-list-streams module now includes standard build configuration files: a .gitignore to exclude build artifacts, an empty consumer-rules.pro file, and a proguard-rules.pro file containing default ProGuard configuration comments. These files support the module's build and optimization processes.

feature-list-streams · medium confidence

Added ProGuard configuration for the Favorites feature

The Favorites feature module now includes a ProGuard rules file (proguard-rules.pro) to handle code shrinking and obfuscation for that specific feature. This ensures that the Favorites component's code is properly processed during the build, with default ProGuard configurations applied to maintain functionality while optimizing the final package.

feature-favorites · medium confidence

Added data models for stream and video details

New data classes have been introduced to represent the structure of the detail screen's API responses. Specifically, the app now includes models for fetching YouTube video metadata (VideoStreamResponse and VideoStreamsResponse) and general stream details (DetailStreamResponse), enabling the UI to display video information and stream metadata.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/detail/data/model · medium confidence

Added navigation route for the search screen

A new navigation graph for the search feature has been added, allowing users to access the search screen. The implementation configures the route using the 'Routes.Search' path and integrates the 'SearchModule' via Koin's 'rememberKoinModules' to provide necessary dependencies. The search screen also includes a back handler and a navigation callback to the detail list.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/search/presentation/navigation · high confidence

Centralized build configuration and new tooling plugins

Build logic is consolidated into new Gradle convention plugins (application, library, Compose, Detekt, Dokka, and Kover) that standardize Android project setup, including SDK versions, min/target SDK levels, and build type settings. A new Config object centralizes application ID, versioning, and API host endpoints, while Keys.kt manages environment-specific bearer tokens. Additionally, static analysis with Detekt, documentation generation with Dokka, and code coverage with Kover are now integrated into the build process.

build-logic/src/main/java · high confidence

Initial Koin dependency injection setup for app-level dependencies

The application now uses Koin for dependency injection, introducing an AppModule that provides singleton instances for Android Resources and a coroutine dispatcher qualified as QualifierDispatcherIO. This module is combined with existing NetworkModule and LocalStorageModule to form the complete DI graph.

app/src/main/java/com/codandotv/streamplayerapp/di · high confidence

Introduce Koin dependency injection for the list streams feature

The list streams feature now uses Koin for dependency injection, replacing previous manual instantiation. The new \ListStreamModule\ is annotated with \@Module\ and \@ComponentScan\, and provides a \ListStreamService\ instance via a \@Factory\-annotated function that retrieves a \Retrofit\ instance from the Koin context. This change aligns the list module with the project's standard DI pattern, ensuring consistent service creation and easier testing.

_feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature\_list\streams/list/di · medium confidence

Migrate MainActivity to Compose with Koin integration

The app's main activity has been refactored from a traditional XML-based Android Activity to a Jetpack Compose-based ComponentActivity. This change introduces a Compose UI hierarchy (StreamPlayerApp) and integrates Koin for dependency injection, ensuring the application context is properly initialized at startup.

app/src/main/java/com/codandotv/streamplayerapp · medium confidence

Upgraded Gradle wrapper to version 8.5

The project's Gradle wrapper has been upgraded from version 7.5 to 8.5. This update includes configuration changes such as setting a network timeout and validating the distribution URL, which may affect how the build environment is initialized and how dependencies are fetched during the build process.

gradle · high confidence

Test coverage

Added unit tests for the detail stream feature; Removed default Android instrumented test; Updated unit test assertions.

Dependencies

Migrate Android build system to Gradle Kotlin DSL and version catalogs

The project's build configuration has been modernized by migrating from Groovy to the Gradle Kotlin DSL (\.kts\), introducing a centralized \libs.versions.toml\ version catalog to manage dependencies, and adding build-logic for plugin management. This change also includes updating the Android Gradle plugin to version 8.2.2, increasing the JVM memory allocation for the Gradle daemon, and enabling build features such as \buildConfig\ and \nonTransitiveRClass\ across the application and its modules.

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

Lenses

  • Code Health 100 → 99 (-0.9)
  • Architecture 98 → 94 (-3.4)
  • Maturity 45 → 48 (+2.1)
  • Readiness 21 → 46 (+25.6)
  • Security 65 → 90 (+25.3)
  • Domain Modelling 100 → 70 (-30.3)

Resolved (10)

  • Boundary-crossing change coupling: Config.kt ↔ NetworkModule.kt (build-logic/src/main/java/Config.kt)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (13 lines × 2) (feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature_list_streams/search/presentation/screens/SearchViewModel.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (12)

  • Boundary-crossing change coupling: Colors.kt ↔ DetailStreamsScreen.kt (core-shared-ui/src/main/java/com/codandotv/streamplayerapp/core_shared_ui/resources/Colors.kt)
  • Documentation: no usage examples (README.md)
  • Duplicated block (14–15 lines × 2) (feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature_list_streams/search/presentation/screens/SearchViewModel.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • MethodTooLong: SharingStreamCustomViewKt.SharingStreamCustomView (core-shared-ui/src/main/java/com/codandotv/streamplayerapp/core_shared_ui/widget/SharingStreamCustomView.kt)
  • No Gemfile.lock committed by an application
  • No dependency advisory monitoring
  • Workflow token permissions not restricted

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

Survey your own repository

CodandoTV/Netflix-Android 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 7dc3eee526a58135ae2001293c50a42cf648a308 — 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.