ibenabdallah/the-movie-db
53.6
Adequate · 22 September 2026
2.3k
lines of production code
Kotlin
primary language
7
measurements over time
What this system is
This system is a cross-platform mobile application for browsing and viewing movie information, supporting Android, iOS, and Wear OS devices. It provides features to list and search for now-playing, popular, top-rated, and upcoming movies, along with detailed movie information. The architecture has been refactored to use a clean, layered structure with separate modules for UI, domain logic, and data handling, leveraging modern Kotlin and Jetpack Compose technologies.
Features
Introduce Wear OS support for The Movie DB app
Users can now access the app on Wear OS devices. This change adds a new \wearOS\ module containing the \MainActivity\ and UI components for smartwatches, including a scrollable list of currently playing movies. The implementation leverages the Wear Compose library and integrates with the existing Koin dependency injection and view models to fetch and display movie data on the wearable interface.
wearOS · high confidence
New domain use cases and mappers for movie listings and details
The domain layer now includes new use cases for retrieving all now-playing, popular, top-rated, and upcoming movies, as well as detailed movie information. Each listing use case is implemented to fetch paginated data from the repository, map entities to domain models, and return a Flow of PagingData. A new MovieDetailsUseCase and its implementation handle fetching and mapping detailed movie data. Corresponding mappers (MovieMapper, MovieDetailsMapper) and their implementations are added to handle data transformation. The Koin DI module is updated to register these new use cases and mappers.
domain · high confidence
Removals
Removed obsolete MVVM and navigation components from composeApp
Deleted the legacy data layer (Status, DataState, ApiInterface, ApiImpl, MovieRepository), domain use cases (AllNowPlayingMovieUseCase, etc.), and UI components (MovieDetailViewModel, NavGraph, NavigationScreen) from the composeApp module. This removes the previous implementation of movie listing and detail screens, likely as part of a broader architectural refactoring to a new structure.
composeApp · high confidence
Behavioural changes
Android app module restructured and configured
The Android application code has been reorganized into a new 'androidApp' module, moving resources and the main activity from the previous 'composeApp' location. Additionally, the app's display name in the launcher has been corrected from 'TheMovieDB' to 'The Movie DB', and a preview function for the main screen has been added to support Compose preview tooling.
androidApp · high confidence
Migrate navigation to Jetpack Compose Navigation
The app's navigation system has been migrated from the precompose library to the standard Jetpack Compose Navigation library. This change updates the bottom navigation bar and screen transitions to use \NavHostController\ and \NavHost\ components, replacing the previous \Navigator\-based approach. As a result, screen-to-screen transitions and back-stack management now follow standard Compose Navigation patterns, while the overall multi-screen structure (Now Playing, Popular, Top Rated, Upcoming, and Movie Details) remains the same.
uiCompose · high confidence
Restructured data layer and simplified movie detail fetching
The data module was reorganized, moving files from the composeApp to the data module and introducing platform-specific locale handling (Android, iOS, and common interfaces). The movie detail fetching was simplified by removing the previous Flow-based DataState wrapper in favor of a direct DataResult return from the repository, and the MoviePagingSource was updated to handle HTTP errors directly rather than through a Status wrapper.
data · medium confidence
Upgraded Gradle wrapper to version 9.3.1
The project's Gradle wrapper has been updated from version 8.4 to 9.3.1. This change ensures that the project builds using the newer Gradle release, which may include performance improvements, new features, and bug fixes compared to the previous version.
gradle · high confidence
iOS app updated to target uiCompose framework and update versioning
The iOS application has been updated to link against the 'uiCompose' framework instead of 'composeApp', reflecting a structural change in the shared code modules. Additionally, the iOS app's versioning has been updated to '1.0.0' with a build number of '100', and the Xcode project configuration has been adjusted to reference the new framework paths and build phases.
iosApp · high confidence
Dependencies
Upgrade to Kotlin 2.3.10, Compose 1.10.1, and modernize project structure
The project has been upgraded to Kotlin 2.3.10 and Jetpack Compose 1.10.1, alongside a major update to the Android Gradle Plugin to 9.0.0. The build configuration has been modernized by replacing the legacy \moko\ resource and MVVM libraries with \viewmodel-compose\ and \navigation-compose\. Additionally, the project structure has been refactored to include separate modules for Android (\androidApp\), UI (\uiCompose\), domain logic (\domain\), data (\data\), models (\model\), and a new Wear OS application (\wearOS\), with corresponding updates to \settings.gradle.kts\ and \libs.versions.toml\.
(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
Score
- CAI 55 → 54 (-0.9)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 98 (-1.4)
- Architecture 100 → 89 (-10.5)
- Maturity 63 → 63 (+0.0)
- Readiness 24 → 26 (+1.4)
- Security 100 → 100 (+0.0)
Resolved (10)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 3) (uiCompose/src/commonMain/kotlin/ui/popular/PopularScreen.kt)
- Duplicated block (9 lines × 4) (uiCompose/src/commonMain/kotlin/ui/newplaying/NowPlayingScreen.kt)
- No exposed public API
- Test reliability not included
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- git history depth insufficient
- single-maintainer — knowledge-concentration (bus factor) risk
New (8)
- 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 (13–14 lines × 3) (uiCompose/src/commonMain/kotlin/ui/popular/PopularScreen.kt)
- Duplicated block (9–11 lines × 4) (uiCompose/src/commonMain/kotlin/ui/newplaying/NowPlayingScreen.kt)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (uiCompose/src/commonMain/kotlin/ui/newplaying/NowPlayingScreen.kt)
- MethodTooLong: UIMovieDetailsKt.UIMovieDetails (uiCompose/src/commonMain/kotlin/ui/details/UIMovieDetails.kt)
- No ADRs found
Architecture
- Containers 0 added · 0 removed · contexts 3 added · 1 removed · edges 1 added · 0 removed
Added bounded contexts (3)
- data
- model
- uiCompose
Removed bounded contexts (1)
- wearOS
Added dependency edges (1)
- uiCompose → model (coupling)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ibenabdallah/the-movie-db 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 22 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 ec5b7baaddc97dcf354b3a3a096e4dd60a547c78 — 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-821afab8930d.