Skip to content
CAI
Software that uses CAICheck a score

agustiyann/Android-Clean-Architecture

54.3

Adequate · 21 September 2026

773

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 for browsing and managing a collection of anime titles. It provides a home screen to view anime lists, a detail page to view specific anime information, and a favorites section to track preferred titles. The system utilizes a clean architecture with Koin for dependency injection, Room for local caching, and Retrofit for network requests.

Features

Add anime detail page with favorite toggle

Introduced the anime detail screen, allowing users to view anime information and toggle their favorite status via a floating action button. The implementation uses Koin for dependency injection and follows a clean architecture pattern with a dedicated ViewModel that delegates the favorite update to a domain use case.

app/src/main/java/com/masscode/animesuta/detail · medium confidence

Add dynamic favorite feature module

A new dynamic feature module named 'favorite' has been added to the application. This module includes a 'FavoriteFragment' that displays a user's favorite anime titles in a grid layout, utilizing Koin for dependency injection and Timber for logging. The module is configured as an install-time dynamic feature, meaning it is delivered to the user at install time rather than on-demand. The implementation includes the necessary Android manifest configuration, ViewModel, and UI components to support this new section of the app.

favorite · high confidence

Introduce core data layer with Room, Retrofit, and Koin

The core module now includes a complete data layer for managing anime data. This adds a local data source backed by a Room database (using SQLCipher for encryption) and a remote data source using Retrofit and Gson. The implementation includes an AnimeRepository that fetches data from the network, caches it locally, and exposes it via Kotlin Flows. Additionally, a RecyclerView adapter and layout for displaying anime lists have been added, along with Koin dependency injection modules to wire the components together.

core · high confidence

New data-binding adapters for UI components

Added new binding adapters in the app module to simplify UI updates in layouts. ActivityBinding.kt provides a binding adapter for configuring the Toolbar with a back arrow and title. BindingAdapters.kt introduces adapters for loading images via Glide (app:showImage), displaying start dates (app:startDate), and formatting rating values (app:setRating, app:setRatingText).

app/src/main/java/com/masscode/animesuta/binding · high confidence

Behavioural changes

Implemented navigation drawer and Koin dependency injection

The app now uses Koin for dependency injection, with the MyApplication class initializing modules for database, network, repository, use cases, and ViewModels. Additionally, MainActivity has been updated to integrate a navigation drawer using AndroidX Navigation, setting up the toolbar and connecting the navigation view to the nav controller.

app/src/main/java/com/masscode/animesuta · medium confidence

Migrate to Koin for dependency injection

The application's dependency injection layer has been refactored to use Koin. New Koin modules (AppModule.kt) now define the binding of use cases and ViewModels, replacing the previous implementation. This change affects how the app manages its core components, specifically the AnimeInteractor, HomeViewModel, and DetailAnimeViewModel.

app/src/main/java/com/masscode/animesuta/di · medium confidence

New home screen with Koin dependency injection

The app introduces a new HomeFragment and HomeViewModel to display the anime list. The implementation uses Koin for dependency injection (noted by the 'by viewModel()' delegate and Koin import) and integrates with the core domain model via AnimeUseCase. The UI handles loading, success, and error states for the anime list.

app/src/main/java/com/masscode/animesuta/home · medium confidence

Dependencies

Initial project structure and dependency configuration

The application is initialized with a multi-module structure (app, core, favorite) and a shared dependency configuration. This adds support for network requests via Retrofit, coroutine flows, database encryption with SQLCipher, and UI enhancements including Lottie animations, Shimmer loading states, and Timber logging. The app also integrates Koin for dependency injection, LeakCanary for memory leak detection, and AndroidX Navigation with dynamic features.

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

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 83 (-17.4)
  • Maturity 37 → 37 (+0.0)
  • Readiness 57 → 57 (+0.0)
  • Security 100 → 100 (+0.0)
  • Domain Modelling 100 → 70 (-30.3)

Resolved (5)

  • 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
  • dormant codebase — no living knowledge left to concentrate

New (5)

  • 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)
  • No ADRs found
  • No dependency advisory monitoring

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

Survey your own repository

agustiyann/Android-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 0a51677ddcd69eb9f8c2f9c8da62518c894d06ce — 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.