Skip to content
CAI
Software that uses CAICheck a score

omjoonkim/CleanArchitecture-SocketIO

56.3

Adequate · 21 September 2026

622

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 scaffolded with a Clean Architecture, separating concerns into data, domain, and presentation layers. It utilizes RxJava for asynchronous operations and Dagger2 for dependency injection, while employing Socket.IO for real-time network communication. The system provides a structured template for building reactive Android apps with a focus on testability and modular design.

Features

Initial app structure and UI for the clean architecture project

The app now includes a main activity with two buttons (requestA and requestB) that trigger corresponding presenter actions. The UI is defined in activity\_main.xml and wired to the presentation layer via Dagger2 injection modules (MainActivityModule, ApplicationModule). The app also includes standard Android resources (colors, strings, styles) and launcher icons.

app/src · high confidence

Initial data layer structure and core components

The data module is introduced with foundational infrastructure: a JobExecutor for background thread management, a generic Mapper interface alongside specific mappers for ModelA and ModelB, and an ExampleConnectable interface defining data stream and request contracts. The module also includes standard Android test scaffolding and configuration files.

data · high confidence

Initial domain layer structure and base use-case infrastructure

The domain module is introduced with a foundational architecture for handling connectable data sources. This includes a \Connectable\ interface for managing connection states, a \ConnectableUseCase\ abstract base class that handles subscription management and thread switching via RxJava, and specific implementations like \ExampleConnectableUseCase\ to demonstrate the pattern. The setup also includes supporting interfaces for threading (\ThreadExecutor\, \PostExecutionThread\) and standard Android test scaffolding.

domain · high confidence

Initial presentation layer scaffolding for the Android app

The presentation module is introduced with a complete MVP (Model-View-Presenter) architecture. This includes base interfaces for Presenters and Views, a specific contract and presenter for the main screen that handles data display and button interactions via RxJava, and standard Android project configuration files (AndroidManifest, proguard rules, and test classes).

presentation · high confidence

Initial project scaffolding with Gradle wrapper and build configuration

The application project has been initialized with essential build infrastructure. A Gradle wrapper is included to ensure consistent builds using Gradle 4.1, and ProGuard configuration rules have been added to support code shrinking and obfuscation. Additionally, a .gitignore file has been added to exclude build artifacts from version control.

app, gradle · high confidence

Initial project structure and documentation

The repository was initialized with the Gradle wrapper scripts (gradlew, gradlew.bat) and an updated README.md. The README outlines the project as a Kotlin-based example of Clean Architecture using Socket.IO, listing dependencies such as RxJava2, Dagger2, and Socket.IO, and includes an architecture diagram.

(repo-wide) · high confidence

Introduce remote module with socket-based connectivity and data mapping

The remote module now provides the application's network layer, implementing the ExampleConnectable interface to manage WebSocket connections via AppSocket. This includes a factory for socket management, mappers to convert remote models (ModelARemoteModel, ModelBRemoteModel) into local entities (ModelAEntity, ModelBEntity), and unit/instrumented tests to verify the new structure.

remote · 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 52 → 56 (+3.9)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 89 (-11.1)
  • Maturity 55 → 55 (+0.0)
  • Readiness 24 → 36 (+11.7)
  • Security 100 → 100 (+0.0)

Resolved (9)

  • 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 claims it 'not working' but does not state which libraries are actually used (e.g., socket.io client vs server) or how the dummy data is generated, so its purpose and correctness cannot be verified. (README.md)
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient
  • git history depth insufficient
  • single-maintainer — knowledge-concentration (bus factor) risk

New (5)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • No ADRs found

Architecture

  • Containers 0 added · 0 removed · contexts 2 added · 0 removed · edges 2 added · 0 removed

Added bounded contexts (2)

  • data
  • domain

Added dependency edges (2)

  • data → domain (coupling)
  • remote → data (coupling)

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

Survey your own repository

omjoonkim/CleanArchitecture-SocketIO 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 5b5098041e9f9717664bf839119c71d8457b4525 — 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.