sansets/android-clean-architecture
49.8
Weak · 21 September 2026
3.2k
lines of production code
Kotlin
primary language
4
measurements over time
What this system is
This is an Android application for browsing and managing recipes, built using a multi-module architecture. It provides features for onboarding, viewing recipe lists and details, and managing favorites. The system handles data synchronization between a remote API and a local Room database, utilizing Clean Architecture principles with dependency injection.
Features
Added ExpandableTextView component
Introduced a new ExpandableTextView library that allows text to expand and collapse with an animation. The component supports customizing the number of visible lines, animation duration, foreground color, and ellipsis text. It also includes basic unit and instrumented tests to verify functionality.
libraries, libraries/expandable-textview · high confidence
Added Gradle wrapper configuration for version 6.7.1
The project now includes a Gradle wrapper configuration file (gradle-wrapper.properties) that specifies Gradle version 6.7.1 as the required build tool version. This ensures consistent build environments across the project.
gradle · high confidence
Added Home and Recipe feature modules with dependency injection and UI components
The app now includes a Home feature that displays a list of food categories and a search interface, and a Recipe feature that provides recipe details, a favorites list, and filtering capabilities. These modules introduce new Android components including Fragments, ViewModels, and RecyclerView adapters, all wired via Dagger 2 dependency injection (HomeComponent, RecipeComponent) to manage their respective scopes and view models.
features/recipe · high confidence
Added onboard feature with UI and navigation
The app now includes an onboard feature that displays a title ('Premium Recipe For You') and subtitle ('360K best choice recipes') with a 'Get Started' button. Tapping the button navigates the user to the home screen. This change introduces the necessary Android manifest module, layout, presenter, and test files for this new flow.
features/onboard · high confidence
Initial app structure and navigation setup
The app now includes the foundational components for the user interface, including the main activity with a bottom navigation bar and a navigation graph defining the app's flow. The navigation graph establishes a journey starting with an onboarding screen, followed by a home section, a recipe list, a recipe detail view, and a favorites section. The main activity manages the visibility of the bottom navigation bar based on the current destination, hiding it on the onboarding screen while displaying it for the home, favorite, and recipe list screens. Additionally, the app's launcher icon and basic string resources have been added to support the UI.
app/src · high confidence
Initial project scaffolding and documentation
The repository was initialized with essential build and configuration files, including a .gitignore for Android/Gradle artifacts, the gradlew and gradlew.bat scripts for the Gradle wrapper, and a comprehensive README.md detailing the Android Clean Architecture, tech stack (Jetpack, Coroutines, Dagger2, etc.), and environment setup.
(repo-wide) · high confidence
Introduces core data layer for recipes and food categories
The core module now includes a complete data layer to fetch and cache recipe and food category information. This includes a Room database with entities for recipes and food categories, along with DataSources for local (Room) and remote (API) data. The InFoodRepository implements the ICoreRepository interface, managing the synchronization of data between the network and local cache using a NetworkBoundResource pattern. Additionally, utility classes for data mapping, image loading, and view extensions have been added to support the application's UI and business logic.
core · high confidence
Dependencies
Initial Android project structure and dependency configuration
The project is initialized with a multi-module Android architecture, defining modules for the app, core, features (onboard, home, recipe), and a shared library (expandable-textview). Dependencies are centralized in deps.gradle, specifying versions for Android Gradle plugin 4.2.2, Kotlin 1.4.10, and libraries including Dagger 2.38, Retrofit 2.9.0, Room 2.3.0, and Glide 4.12.0.
(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 55 → 50 (-4.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.1)
- Architecture 100 → 90 (-9.8)
- Maturity 60 → 60 (+0.0)
- Readiness 24 → 24 (+0.0)
- Security 100 → 100 (+0.0)
- Domain Modelling 100 → 70 (-30.3)
Resolved (16)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (11 lines × 2) (core/src/main/java/id/sansets/infood/core/util/ViewExt.kt)
- Duplicated block (11 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteAdapter.kt)
- Duplicated block (12 lines × 2) (core/src/main/java/id/sansets/infood/core/util/DataMapper.kt)
- Duplicated block (12 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteFragment.kt)
- Duplicated block (13 lines × 2) (core/src/main/java/id/sansets/infood/core/util/DataMapper.kt)
- Duplicated block (17 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (8 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteFragment.kt)
- No exposed public API
- Test reliability not included
- The Architecture section begins ('A single-activity architectur') and clips mid-sentence, leaving whether this is the intended five-point model unverifiable from the visible text. (README.md)
- The Environment Setup section mentions Android Studio 4.0.1 or newer but does not state which SDK version is required (Android API level) for compatibility with the app's target. (README.md)
- early-stage repository — too little history to judge knowledge freshness
- single-maintainer — knowledge-concentration (bus factor) risk
New (16)
- 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) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (11 lines × 2) (core/src/main/java/id/sansets/infood/core/util/DataMapper.kt)
- Duplicated block (11 lines × 2) (core/src/main/java/id/sansets/infood/core/util/ViewExt.kt)
- Duplicated block (12 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteFragment.kt)
- Duplicated block (12 lines × 3) (core/src/main/java/id/sansets/infood/core/util/DataMapper.kt)
- Duplicated block (14 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (23 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteAdapter.kt)
- Duplicated block (24 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (29 lines × 2) (core/src/main/java/id/sansets/infood/core/util/DataMapper.kt)
- Duplicated block (6 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteViewModel.kt)
- Duplicated block (7 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (8 lines × 3) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteSectionAdapter.kt)
- Duplicated block (9 lines × 2) (features/recipe/src/main/java/id/sansets/infood/recipe/presenter/favorite/FavoriteFragment.kt)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
sansets/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 7ce8bafa0ea25d7ac6da58abb183c383a2eebae9 — 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.