Skip to content
CAI
Software that uses CAICheck a score

muryno/CleanArchitecture_Modularization

49.9

Weak · 22 September 2026

1.5k

lines of production code

Kotlin

primary language

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Android application that manages artist and album data, featuring a modernized UI built with Jetpack Compose. It provides detailed information about artists, including their country, and albums, including genre, label, and descriptions. The architecture follows clean principles with distinct layers for data, domain, and presentation, supported by comprehensive test coverage.

Features

Migrate Artist screen to Jetpack Compose

The Artist screen has been rewritten using Jetpack Compose, replacing the previous XML-based Android View implementation. A new AppTheme composable provides light and dark color schemes, while the ArtistScreen composable handles the search interface and artist list. An EmptyArtistScreen composable displays a refresh option when no artists are found. The ArtistFragment now uses a ComposeView to host the new UI, removing all legacy view bindings and RecyclerView setup.

artist-ui/src/main/java/com/muryno/artist/artist/view · high confidence

Behavioural changes

8 commits (0 fixes) modifying buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm

A change to existing behaviour in buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm — 8 commits, 4 files.

(repo-wide) · medium confidence · unverified

Added API level check to NetworkConnectionInterceptor

The NetworkConnectionInterceptor now includes an @RequiresApi annotation, indicating a check for the Android API level. This ensures the interceptor only runs on supported Android versions, preventing potential compatibility issues on older devices.

app/src/main/java · high confidence

Added genre and label fields to album release group API model

The AlbumReleaseGroupApiModel now includes 'genre' and 'label' fields, meaning users will see the genre and label information for album release groups in the API response.

_artist-datasource/src/main/java/com/muryno/artist\datasource/model/album · high confidence

Added logging for ArtistViewModel exceptions

The ArtistViewModel now logs a warning message when an exception occurs during the artist use case execution, aiding in debugging and monitoring of errors in the artist presentation layer.

artist-presentation/src/main/java/com/muryno/presention/artist/viewmodel · high confidence

Adds country information to the artist list item view

The ArtistAdapter's view holder now includes a TextView for the artist's city, which is bound to the item's city property. This change updates the UI to display the artist's location alongside their name, gender, and description in the list.

artist-ui/src/main/java/com/muryno/artist/artist/adapter · medium confidence

Artist domain model extended with country field

The ArtistDomainModel now includes a new 'country' property alongside existing fields like type, state, and score. This change updates the domain model to capture the artist's country information, which was previously absent from the data structure.

artist-domain/src/main/java/com/muryno/domain/artist · high confidence

Artist presentation includes country information

The ArtistDomainToPresentationMapper now maps the 'country' field from the domain model to the presentation layer, ensuring that country data is included in the artist's presentation output.

artist-presentation/src/main/java/com/muryno/presention/artist/mapper · high confidence

Artist profile now includes country information

The ArtistPresentationToUIMapper has been updated to map the country field from the presentation model to the UI model, ensuring that an artist's country is included in the user interface data.

artist-ui/src/main/java/com/muryno/artist/artist/mapper, artist-ui/src/main/java/com/muryno/artist/artist/model · high confidence

Enhanced artist data model and view state management

The artist presentation model now includes a 'country' field to provide more detailed location information for artists. Additionally, the artist view state has been updated to support an empty state, allowing the UI to properly display an empty state when no artists are available.

artist-presentation/src/main/java/com/muryno/presention/artist/model · high confidence

Expanded album and artist data models

The ArtistAlbumDataModel now includes additional fields for genre, label, short and full descriptions, and album image, while the ArtistDataModel now includes a country property. These changes enrich the data available for artists and their albums, allowing for more detailed artist and album information to be displayed.

artist-data/src/main/java/com/muryno/data/model · high confidence

Expanded album domain model with new metadata fields

The ArtistAlbumDomainModel has been updated to include additional fields: genre, label, shortDescription, fullDescription, and albumImage. This expands the data available for each album, allowing for richer metadata and more detailed album descriptions.

artist-domain/src/main/java/com/muryno/domain/artistAlbulm · high confidence

Expanded artist and album API response data with new fields

The Artist and ArtistAlbum response mappers now include additional fields in the API response data. For artist data, the 'country' field is now mapped. For album data, the 'genre' and 'label' fields are included, and placeholder strings are added for 'shortDescription', 'fullDescription', and 'albumImage'. These changes ensure that more data is available in the API responses.

_artist-datasource/src/main/java/com/muryno/artist\datasource/mapper · high confidence

Expanded artist and album domain models with new fields

The data-to-domain mappers now map additional fields to the domain models. For artists, a 'country' property is included in the domain model. For albums, the domain model now includes 'genre', 'label', 'shortDescription', 'fullDescription', and 'albumImage'.

artist-data/src/main/java/com/muryno/data/mapper · medium confidence

Refactors BaseFragment layout inflation and formatting

The BaseFragment class has been refactored to improve code formatting and structure. Specifically, the onCreateView method's view inflation logic has been condensed into a more compact multi-line expression, and the file's indentation and whitespace have been standardized. These changes improve the readability of the base fragment implementation without altering its functional behavior.

artist-ui/src/main/java/com/muryno/artist/base · medium confidence

Refined exception handling in the use-case executor

The domain layer now distinguishes between specific network failures, unexpected errors, and standard domain exceptions. The abstract DomainException base class was changed to accept a String message instead of a Throwable. The UseCaseExecutor was updated to catch SSLHandshakeException and UnknownHostException and wrap them in new custom exceptions (NetworkDomainException), while all other non-domain exceptions are wrapped in a new UnknownDomainException.

artist-domain/src/main/java/com/muryno/domain/cleanarchitecture · high confidence

Updated ArtistApiModel with new fields and formatting

The ArtistApiModel data class has been updated to include new fields: state, country, and disambiguation. Additionally, the model's formatting has been adjusted to a more compact style, and the @SerializedName annotations for begin-area, gender-id, life-span, sort-name, and type-id remain in place to map JSON keys to camelCase properties.

_artist-datasource/src/main/java/com/muryno/artist\datasource/model · medium confidence

Updated Hilt and Compose dependencies with new library definitions

The build configuration has been updated to use Hilt version 2.51.1, replacing the previous 2.38.1. Additionally, new Compose dependencies have been introduced, including Material 3, LiveData integration, and tooling previews, while the Compose compiler version was adjusted to resolve conflicts.

buildSrc/src · medium confidence

Test coverage

Added test coverage for country field in artist mapper; Updated ArtistLiveRepositoryTest with new model fields; Updated ArtistViewModelTest to include country field; Updated domain use case tests to reflect model changes; Updated formatting in ArtistAlbumApiToResponseDataMapperTest.

Dependencies

Centralize JVM target and introduce Compose dependencies

The project now uses a centralized configuration for the Kotlin JVM target, replacing hardcoded '1.8' values with a shared constant. Additionally, the artist-ui module has been updated to include Compose dependencies, specifically adding Compose Runtime, Material 3, LiveData integration, and tooling preview support, while also standardizing Hilt and Navigation library references.

(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

Score

  • CAI 49 → 50 (+1.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 93 (-6.9)
  • Maturity 41 → 49 (+8.6)
  • Readiness 24 → 24 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (6)

  • 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
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • The project modules list is present but each module's purpose and interdependencies are not explained. (README.md)

New (4)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • No ADRs found
  • Off-boarding risk: anonymized user #1

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

Survey your own repository

muryno/CleanArchitecture_Modularization 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 895c87bc8125f02570ac446b616dfdbb853260d2 — 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.