Skip to content
CAI
Software that uses CAICheck a score

mertceyhan/bitcoin-market-android

63.8

Adequate · 28 September 2026

1.9k

lines of production code

Kotlin

primary language

9

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is an Android Bitcoin market app that displays current price information and market charts, with a home-screen widget and a Compose-based market screen supporting time-range selection, loading/error states, and pull-to-refresh. It is built around a modular architecture that separates theme, navigation, and market features, and it caches market chart data locally to reduce repeated network calls. The history also includes build, dependency, and test changes that support the app’s Compose UI, dark theme, and market data behavior.

Features

Jetpack Compose UI, a home-screen widget, and dark theme added to the Bitcoin market app

The app's interface is rebuilt with Jetpack Compose components — a price header, a detailed price panel (open/high/average/close/low/change), a line chart, a time-range picker, a loading animation, and an error screen — alongside a new home-screen app widget that shows the current price and change rate, opens the app on tap, and refreshes via a callback. Dark theme support is added through night-mode resources and dark-mode-aware chart axis colors, and the UI state model is refactored (the old State/BaseRepository/State classes are removed in favor of a new UiState), with new Hilt modules providing coroutine dispatchers and a Room database.

app/src · medium confidence

Architecture

Adds a dedicated core theme module

This change introduces a new core-theme module containing Android Compose theme definitions, including light and dark color palettes, typography based on Red Hat Display, and a BitcoinMarketTheme composable that selects colors based on the system dark-theme setting. It also adds tests verifying that the theme returns the correct color set for dark and light modes. The change is primarily an internal modularization of theme code rather than a visible behavior change in existing screens.

core-theme · medium confidence

Market data dependencies are now wired through a singleton Hilt module

The market feature’s dependency-injection setup was restructured so that the market repository and market information use case are bound to their interfaces, and the module is installed in the singleton component instead of the view-model component. The module also registers the market database DAO and replaces the previous remote-data-source and mapper wiring, while keeping the Retrofit-based market service provider. This is an internal dependency setup change that makes market data access more consistent and supports local database-backed market data, but it does not by itself introduce a visible user-facing feature.

app/src/main/java/com/mertceyhan/bitcoinmarket/features/market/di · high confidence

Modular navigation destinations for splash and market screens

This change adds a shared navigation Destination interface in core-navigation and introduces navigation destinations for the market screen and splash screen in their respective modules. The splash screen includes a one-second fade-in animation and calls a completion callback when the animation finishes, while the market screen destination exposes a route for the market screen. The change appears to support a more modular app structure rather than changing existing user-facing behavior.

app/src/main/java/com/mertceyhan/bitcoinmarket/features/market/navigation, core-navigation, feature-splash/src/main/java/com/mertceyhan/bitcoinmarket/feature/splash · medium confidence

Behavioural changes

19 commits (1 fix) modifying buildSrc

A change to existing behaviour in buildSrc — 19 commits (1 fix), 4 files.

buildSrc · medium confidence · unverified

Market price chart data is now cached locally

The market data layer adds a Room-backed local cache for market price chart responses. When a chart is requested, the repository first returns a locally stored copy if it is less than one minute old; otherwise it fetches from the remote source, stores the result locally, and falls back to the cached copy if available. The repository method also changes from returning a Flow/State to returning the chart response directly, which should reduce repeated network calls for the same chart data.

app/src/main/java/com/mertceyhan/bitcoinmarket/features/market/data · medium confidence

Market screen migrated to Jetpack Compose with pull-to-refresh

The market screen is now implemented as a Jetpack Compose screen instead of the previous Android Fragment. It loads market information for the selected time range, shows loading and error states, and supports pull-to-refresh through the Compose SwipeRefresh component. The view model now exposes Compose state and maps the UI time range to the underlying market timespan, replacing the previous LiveData-based fragment flow.

app/src/main/java/com/mertceyhan/bitcoinmarket/features/market/ui · medium confidence

Test coverage

Added and updated unit tests for market UI state and view model; Added tests for market price chart mapping and repository fetch logic; Updated tests for market information use case.

Dependencies

Dependency and build configuration adds Compose, Hilt navigation, Room, and Gradle Versions plugin

The dependency/build configuration changes add dependencies such as composeMaterial, composeTooling, composeNavigation, composeActivity, composeViewModel, composeLiveData, composeConstraintLayout, hiltNavigationCompose, accompanistSwipeRefresh, roomKtx, glance, coroutinesCore, lottieCompose, coroutinesTest, and composeUiTest, while removing constraintLayout, swipeRefreshLayout, navigationFragment, navigationUI, lottie, coroutineTestCore, and coroutineTest. The root build configuration also adds the com.github.ben-manes.versions plugin, removes jcenter, and configures dependencyUpdates and test logging; settings.gradle.kts includes core-theme, core-navigation, and feature-splash modules.

(dependencies) · medium confidence

Upgrade Gradle wrapper to 7.4.1

The Gradle wrapper now points to Gradle 7.4.1 instead of Gradle 6.5, updating the build toolchain used to compile and run the project. This is an internal build dependency change and does not by itself introduce a user-facing feature.

gradle · 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 68 → 64 (-3.9)
  • Rubric changed (rubric-2026.08.20 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 100 → 98 (-1.8)
  • Architecture 100 → 95 (-5.5)
  • Maturity 54 → 54 (+0.0)
  • Readiness 57 → 50 (-7.0)
  • Security 100 → 95 (-5.0)
  • Performance 100 (new)

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
  • Test reliability not included
  • The README does not describe how to run or build the app, which is essential for new contributors. (README.md)
  • dormant codebase — no living knowledge left to concentrate

New (9)

  • 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)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • MethodTooLong: PriceKt.Price (app/src/main/java/com/mertceyhan/bitcoinmarket/components/Price.kt)
  • No ADRs found
  • No dependency advisory monitoring
  • Off the main sequence: :core-theme

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

Survey your own repository

mertceyhan/bitcoin-market-android 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 28 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 40d81142e7fb1df7cc1b2b540de6ff0995034651 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.