carlosgub/JetCoMovie-App-
64.0
Adequate · 21 September 2026
3.2k
lines of production code
Kotlin
primary language
4
measurements over time
What this system is
This is an Android movie browsing and ticketing application built with Jetpack Compose and the MVVM architecture. It enables users to search for movies, view detailed information, and manage their personal ticket bookings. The system persists user data locally and manages background execution through a structured data layer. The codebase has been refactored to centralize business logic, standardize the UI theme, and include comprehensive unit tests for all major features.
Features
Added movie detail and ticket screens with view models
Introduced new UI components for viewing movie details and managing user tickets. The 'detail' feature now includes a DetailScreen and DetailViewModel to display comprehensive movie information, while the 'ticket' feature adds a TicketScreen and TicketViewModel to list and manage booked movies. These additions provide the foundation for navigating to and viewing individual movie information and a user's ticket history.
app/src/main/java/com/example/moviejetpackcompose/ui/features/detail, app/src/main/java/com/example/moviejetpackcompose/ui/features/ticket · high confidence
Added reusable UI components for movie browsing and display
The app introduces several new Compose UI components in the views package: a CategoryChip for displaying categories, a BlackVerticalGradient for background effects, a LazyVerticalGridMovies for displaying movie lists, a Loading indicator using Lottie animations, a MoviePoster for displaying images with placeholders, and a MovieTitle for consistent title styling. These components support the movie browsing and detail screens.
app/src/main/java/com/example/moviejetpackcompose/ui/views · medium confidence
Added search screen and view model
Introduced a new SearchScreen composable and its corresponding SearchViewModel, enabling users to search for movies by entering a query. The search functionality includes a 300ms debounce on the text field to trigger API calls only after the user stops typing, with a minimum character requirement of 3 before initiating the search.
app/src/main/java/com/example/moviejetpackcompose/ui/features/search · high confidence
Introduces core infrastructure for local storage and background execution
The app now supports local persistence and structured background threading. A new Room database (MovieDatabase) is introduced with type converters for JSON serialization, and a DispatcherProvider abstracts coroutine dispatchers (Main, IO, Default) with Hilt dependency injection. The existing database module is refactored to provide Category, MovieDetail, and Ticket DAOs from the new database, and the network module is extended to provide Detail and Search API clients alongside the existing Movie client.
app/src/main/java/com/example/moviejetpackcompose/core · high confidence
Removals
Removed obsolete movie feature components
The legacy movie feature implementation has been removed from the application. This includes the deletion of the \CategoryDatabase\ for local storage, the \MovieViewModel\ responsible for fetching and managing the state of now-playing movies, the \MovieModel\ data class, and the \MovieUiState\ sealed interface. As a result, the app no longer supports displaying or interacting with the now-playing movies list via this specific feature module.
app/src/main/java/com/example/moviejetpackcompose/features/movie · high confidence
Behavioural changes
Centralized use-case classes for movie operations
The application's model layer has been reorganized to centralize business logic into dedicated use-case classes. New use cases for booking, deleting, and checking the status of movies have been added, while the existing GetNowPlayingMovies use case was moved from the features/movie/model directory to the new model/usecase location. This change groups all movie-related interactions—such as fetching details, searching, and managing bookings—into a consistent structure, making it easier to locate and manage the app's core functionality.
app/src/main/java/com/example/moviejetpackcompose/model · high confidence
Introduces navigation and theming to the app
The app now uses Jetpack Navigation to route between the Home, Detail, and Ticket screens, passing view models and navigation controllers as arguments. The UI theme is updated to use a custom color palette (myColors) instead of the default MaterialTheme colors, and the Profile screen is relocated to the ui package.
app/src/main/java/com/example/moviejetpackcompose · high confidence
New helper utilities and data mapping extensions for movie details
The app now includes new helper files (Constants.kt, Helpers.kt) and updated extension functions in Extensions.kt. These changes introduce constants for UI layout and loading states, and add mapping logic to convert network responses (MovieDetailResponse) and database entities (MovieEntity) into the UI model (MovieModel). Specifically, it adds support for displaying movie runtime and overview, and removes unused fields (backdropPath, popularity) from the movie model, enabling more detailed movie information display in the UI.
app/src/main/java/com/example/moviejetpackcompose/helpers · high confidence
Refactor home screen navigation and theming
The home screen's navigation and theming have been updated to support multiple view models (movie, ticket, and search) and use centralized theme resources. The HomeScreen composable now accepts and passes movieViewModel, ticketViewModel, and searchViewModel, along with a main navigation controller, to its child components. The bottom bar's layout margins and spacing have been replaced with standardized theme values (spacing\_2, spacing\_4\_2, spacing\_2\_2) and the divider's color and thickness are now derived from the app's theme (DividerColor, divider\_thickness) instead of hardcoded values. Additionally, the HomeScreen component has been moved from the 'features/home/ui' package to 'ui/features/home' to align with the project's new package structure.
app/src/main/java/com/example/moviejetpackcompose/ui/features/home · medium confidence
Refactored movie feature structure and updated UI state handling
The movie feature was reorganized into a new package structure, moving components like the bottom bar and movie screen to more consistent locations. The MovieModel was updated to include additional fields such as runtime and overview, and the MovieViewModel now uses a GenericState for UI state management. The MovieScreen was refactored to use a new loading state check and added navigation to movie details.
app/src/main/java/com/example/moviejetpackcompose/ui/features/movie · medium confidence
Refactored theme system to support light and dark modes
The app's visual appearance now adapts to the device's dark mode setting. This is achieved by introducing a new MyColors data class and a CompositionLocal provider (LocalColors) that supplies the active color palette to the rest of the app. The Theme.kt file was updated to define separate light and dark color palettes, and new spacing, shape, and typography styles were added to standardize the UI.
app/src/main/java/com/example/moviejetpackcompose/ui/theme · high confidence
Removed placeholder search screen implementation
The placeholder implementation for the search screen has been removed from the application. This change eliminates the temporary 'Search' text display that was previously used during the development of the search feature, indicating a transition to a more complete or different search interface.
app/src/main/java/com/example/moviejetpackcompose/features/search · medium confidence
Reorganized data layer into a unified package structure
The application's data layer has been restructured to consolidate all data-related components—including repositories, database access objects (DAOs), network clients, and response models—into the \com.example.moviejetpackcompose.data\ package hierarchy. This change moves files such as \MovieRepository\, \DetailRepository\, and \SearchRepository\ from their previous feature-specific locations (e.g., \features/movie/data\) to a centralized data module, while also introducing new repositories for managing movie details, search queries, and ticket bookings. This reorganization simplifies the project's architecture by grouping all data-fetching and persistence logic under a single, cohesive package structure.
app/src/main/java/com/example/moviejetpackcompose/data · high confidence
Test coverage
Added unit tests for MovieViewModel; Added unit tests for movie detail and ticket view models; Added unit tests for the search feature and test utilities.
Dependencies
Migrated Android build configuration from Groovy to Kotlin DSL
The project's build configuration has been migrated from Groovy (build.gradle) to Kotlin DSL (build.gradle.kts). This change updates the build system to use Kotlin for build scripts, introducing new dependencies such as Detekt (v1.22.0) and KtLint (v0.0.26) for static code analysis, and updates various AndroidX and third-party library versions (e.g., Hilt 2.43.2, Compose UI 1.3.3) to their latest stable releases.
(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 56 → 64 (+7.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (-0.1)
- Architecture 100 → 96 (-4.2)
- Maturity 36 → 50 (+13.9)
- Readiness 57 → 57 (+0.0)
- Security 85 → 95 (+9.7)
Resolved (11)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (15 lines × 2) (app/src/main/java/com/example/moviejetpackcompose/helpers/Extensions.kt)
- Duplicated block (16 lines × 3) (app/src/main/java/com/example/moviejetpackcompose/ui/features/movie/MovieScreen.kt)
- Duplicated block (19 lines × 2) (app/src/main/java/com/example/moviejetpackcompose/ui/features/search/SearchScreen.kt)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- change coupling unreadable for .kt — no production change history could be paired for this repository's own source
- dormant codebase — no living knowledge left to concentrate
New (13)
- 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 (16 lines × 2) (app/src/main/java/com/example/moviejetpackcompose/helpers/Extensions.kt)
- Duplicated block (16–17 lines × 3) (app/src/main/java/com/example/moviejetpackcompose/ui/features/movie/MovieScreen.kt)
- Duplicated block (30 lines × 2) (app/src/main/java/com/example/moviejetpackcompose/ui/features/search/SearchScreen.kt)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No ADRs found
- 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
carlosgub/JetCoMovie-App- 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 29800ffcbdc15bb3110170f966b76efb03a17221 — 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.