Skip to content
CAI
Software that uses CAICheck a score

im-o/jetpack-compose-clean-architecture

64.6

Adequate · 21 September 2026

3.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 application built with Kotlin and Jetpack Compose, structured using a multi-module architecture that separates core logic from specific features. It implements a clean architecture with distinct data, domain, and UI layers, utilizing Hilt for dependency injection and Room for local storage. The system provides a sample feature set including product browsing, detail views, and a shopping cart, all managed by ViewModels and supported by Firebase integration.

Features

Add sample feature with product browsing, cart, and detail screens

The \features/sample\ module was added, introducing a complete sample application structure. This includes UI components for displaying product lists (\HomeScreen\, \HomeContent\), product detail views (\DetailScreen\), and a shopping cart (\CartScreen\). The feature includes associated ViewModels (\HomeViewModel\, \DetailViewModel\, \CartViewModel\) that manage data states and interact with use cases. Navigation is handled via a \MainNavHost\ and \BottomNav\ bar, supporting routes for Home, Cart, Profile, and Product Detail. Instrumented tests and standard Android manifest/proguard files were also added to support the new module.

features/sample · high confidence

Added core module with data, domain, and UI components

The \core\ module was created to centralize shared application logic and UI elements. This includes a complete data layer with a Room database (\AppDatabase\, \ProductEntity\), a remote API client (\ApiService\), and repository implementations (\ProductRepositoryImpl\, \DbProductRepositoryImpl\) that bridge the data sources. The domain layer introduces a clean architecture with use cases for fetching and managing products, supported by Hilt dependency injection modules for database, network, and repository bindings. On the UI side, reusable components like \SearchBar\ and layout templates (\MainTemplate\, \DetailTemplate\) were added, along with a comprehensive Material 3 theme configuration (colors, typography, shapes) and utility classes for dimensions and formatting.

core/src · high confidence

Initial app structure and adaptive navigation

The app now features an adaptive navigation system that dynamically selects the appropriate navigation component based on the device's screen width. On compact screens, a bottom navigation bar is used; on medium screens, a navigation rail is displayed; and on expanded screens, a permanent navigation drawer is shown. This behavior is implemented in the main activity and the JetMainApp composable, which calculate the window size class and pass the corresponding navigation type to the main screen.

app/src · high confidence

Initial project scaffolding and documentation

The repository was initialized with essential build infrastructure, including the Gradle wrapper scripts (gradlew, gradlew.bat) and a .gitignore file to exclude IDE and build artifacts. The project was also documented with a README.md file outlining the tech stack (Kotlin, Jetpack Compose, Hilt, etc.) and setup instructions.

(repo-wide) · high confidence

Behavioural changes

Added Gradle wrapper configuration

The project now includes a Gradle wrapper configuration file (gradle-wrapper.properties) that specifies the use of Gradle version 7.4. This ensures consistent build environments across all users and CI/CD pipelines by automatically downloading and using the correct Gradle distribution.

gradle · high confidence

Centralized dependency and version management for the Android app

The buildSrc module now centralizes all library versions and dependency declarations. A new Versions object defines specific versions for AndroidX, Compose, Hilt, Retrofit, and other libraries, while a MyDependencies object maps these versions to standard Maven coordinates. This change also introduces a Modules object to define project module paths and updates the minimum SDK level to 24.

buildSrc · medium confidence

Core module initialized with Firebase and ProGuard configuration

The core module has been initialized with new configuration files to support Firebase integration. A google-services.json file has been added to the core module, containing the project configuration for the Firebase Realtime Database and associated client credentials. Additionally, ProGuard and consumer-rules files have been added to the core module to handle code shrinking and obfuscation for the Android application.

core · medium confidence

Initial project setup with Firebase configuration

The app module is initialized with essential configuration files. A .gitignore file is added to exclude build artifacts, and a proguard-rules.pro file is included for code obfuscation settings. Most importantly, a google-services.json file is added, containing the Firebase project configuration (project ID, API keys, and client details) for the 'nebengin-aja-id-01' project, enabling Firebase services such as the Realtime Database.

app · high confidence

Dependencies

Initial project structure with modular architecture

The project is initialized with a multi-module Gradle structure, introducing \core\ and \features:sample\ modules alongside the main \app\ module. This setup configures AndroidX, Kotlin, Hilt, and Compose dependencies across the build files, establishing the foundation for a clean architecture with separate concerns for core functionality and sample features.

(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

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

Lenses

  • Code Health 99 → 99 (+0.8)
  • Architecture 96 → 97 (+0.7)
  • Maturity 57 → 57 (+0.0)
  • Readiness 41 → 57 (+15.3)
  • Security 58 → 93 (+35.1)
  • Domain Modelling 100 → 74 (-25.6)

Resolved (21)

  • Change coupling: Versions.kt ↔ MyDependencies.kt (buildSrc/src/main/kotlin/Versions.kt)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (12 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/component/ProductCartItem.kt)
  • Duplicated block (12 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/home/HomeScreen.kt)
  • Duplicated block (13 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/home/section/HomeContent.kt)
  • Duplicated block (14 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/navigation/NavRail.kt)
  • Duplicated block (5 lines × 3) (features/sample/src/main/java/id/barakkastudio/sample/ui/navigation/BottomNav.kt)
  • Duplicated block (6 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/navigation/NavRail.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Rotate the exposed credentials — git history can't be un-committed
  • Secret: generic-api-key (app/google-services.json)
  • Secret: generic-api-key (core/google-services.json)
  • Test reliability not included
  • …and 1 more

New (20)

  • 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 × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/home/HomeScreen.kt)
  • Duplicated block (17 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/component/ProductCartItem.kt)
  • Duplicated block (18 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/navigation/NavRail.kt)
  • Duplicated block (24 lines × 2) (features/sample/src/main/java/id/barakkastudio/sample/ui/home/section/HomeContent.kt)
  • Duplicated block (2–6 lines × 3) (features/sample/src/main/java/id/barakkastudio/sample/ui/navigation/BottomNav.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • 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)
  • 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

im-o/jetpack-compose-clean-architecture 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 ecea30212b228ed88e2a5f38b55ea4c9b107a246 — 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.