Skip to content
CAI
Software that uses CAICheck a score

edittler/clean-architecture

48.3

Weak · 22 September 2026

3.8k

lines of production code

Swift

primary language

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform mobile application for managing student course data. It provides a local-first architecture on both Android and iOS, utilizing Realm and NoSQL storage to cache courses and subjects for offline access. The app features a clean architecture with distinct domain, presentation, and data layers to handle UI logic and navigation for course enrollment and listing.

Features

Initial Android app structure with domain and presentation layers

The Android application is initialized with a clean architecture, introducing domain models for Courses and Subjects, along with mappers to convert JSON data into these models. The app includes a local data repository using a simple NoSQL storage mechanism with hardcoded sample data for subjects and courses. Presentation layer components, including presenters and view models, are added to handle UI logic for displaying available subjects, courses, and enrolled courses. The app's main activity and several other activities (Courses, EnrollToCourse, EnrolledCourses) are registered in the manifest, establishing the core navigation and data flow for the student course management feature.

android/FIUBAPP · high confidence

Initial Android project structure and configuration

The Android module for the mobile application has been initialized with a standard project structure. This includes Gradle build scripts and wrapper scripts (gradlew) for building the app, along with essential configuration files such as .gitignore, IDE settings for Android Studio and IntelliJ (.idea/), and a FindBugs filter. The project is configured to support API 15 and above, using Java 1.8, and includes dependencies for testing (JUnit, Mockito) and code analysis (FindBugs).

android · high confidence

iOS app initializes with local course and subject data

The iOS application now includes a local dataset of courses and subjects, stored as JSON files (courses.json, subjects.json) and model classes (Course, Subject). On first launch, the app loads this data into a local Realm database, ensuring that the initial list of subjects and courses is available immediately without requiring a network connection. This provides a functional baseline for the course listing and enrollment features.

ios · high confidence

Dependencies

Initial Android and iOS build configurations and dependencies

The project now includes the foundational build scripts and dependency declarations for both Android and iOS platforms. On Android, Gradle files define the application structure, specifying SDK versions (compileSdk 23, minSdk 15), and declare dependencies including Android Support Library, Butterknife, Timber, Retrofit, and testing libraries. On iOS, the Podfile configures the 'FIUBA' target with RealmSwift 2.0.2 and sets the Swift version to 3.0. These changes establish the environment required to build and run the mobile applications.

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

Lenses

  • Code Health 100 → 99 (-0.8)
  • Architecture 100 → 86 (-14.1)
  • Maturity 68 → 47 (-21.5)
  • Readiness 24 → 25 (+0.4)
  • Security 100 → 100 (+0.0)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • Duplicated block (8 lines × 3) (android/FIUBAPP/app/src/main/java/com/clean/data/repository/LocalDataBase.java)
  • No exposed public API
  • Test reliability not included
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (20)

  • Assertions commented out: testExample (ios/FIUBATests/FIUBATests.swift)
  • Assertions commented out: testExample (ios/FIUBAUITests/FIUBAUITests.swift)
  • 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 (10 lines × 2) (ios/FIUBA/Workers/CoursesWorker.swift)
  • Duplicated block (10 lines × 3) (ios/FIUBA/Services/CoursesRealmStore.swift)
  • Duplicated block (13 lines × 3) (ios/FIUBA/Scenes/ListEnrolledCourses/ListEnrolledCoursesConfigurator.swift)
  • Duplicated block (34 lines × 2) (ios/FIUBA/Scenes/ListEnrolledCourses/ListEnrolledCoursesRouter.swift)
  • Duplicated block (5 lines × 2) (ios/FIUBA/Scenes/ListCourses/ListCoursesWorker.swift)
  • Duplicated block (6 lines × 2) (ios/FIUBA/Scenes/ListCourses/ListCoursesViewController.swift)
  • Duplicated block (6 lines × 2) (ios/FIUBA/Services/CoursesJsonStore.swift)
  • Duplicated block (7 lines × 2) (ios/FIUBA/Scenes/ListCourses/ListCoursesViewController.swift)
  • Low cohesion: AppDelegate (LCOM4 6) (ios/FIUBA/AppDelegate.swift)
  • Low cohesion: ListEnrolledCoursesViewController (LCOM4 6) (ios/FIUBA/Scenes/ListEnrolledCourses/ListEnrolledCoursesViewController.swift)
  • Low cohesion: ListSubjectsViewController (LCOM4 4) (ios/FIUBA/Scenes/ListSubjects/ListSubjectsViewController.swift)
  • Low cohesion: ShowOptionsViewController (LCOM4 4) (ios/FIUBA/Scenes/ShowOptions/ShowOptionsViewController.swift)
  • No ADRs found
  • No assertions: testPerformanceExample (ios/FIUBATests/FIUBATests.swift)
  • Test project verifies nothing: FIUBAUITests (ios/FIUBAUITests/FIUBAUITests.swift)

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

Survey your own repository

edittler/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 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 640cb0fea9edbed115c4d58714a35ea753f11693 — 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-90d5d2fe38ee.