Skip to content
CAI
Software that uses CAICheck a score

Felix-Kariuki/Yummy

59.9

Adequate · 21 September 2026

1.9k

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, likely a recipe or meal discovery app, built with a modular architecture separating domain, data, and presentation layers. The system manages meal and category data through a restructured data layer using Room and Retrofit, while providing a modern UI with Material Design and dark mode support. It includes comprehensive testing coverage for UI, API, and database components, alongside performance benchmarking for cold-startup metrics.

Features

Added Google Services configuration and ProGuard rules for multiple apps

The app module now includes a google-services.json file containing configuration details for three Android applications (com.flexcode.connect, com.flexcode.taskio, and com.flexcode.yummy), enabling Firebase integration for each. Additionally, ProGuard rules were updated to reference build.gradle.kts instead of build.gradle, and a new rule was added to preserve the com.flexcode.yummy.data package during code obfuscation.

app · high confidence

Added cold-startup benchmark for the app

A new benchmark module has been added to measure the app's cold-startup performance. This includes a JUnit-based macrobenchmark that launches the app from a cold state five times, providing metrics on startup time. The setup also includes the necessary Android manifest queries and build configuration to support this new testing capability.

benchmark · high confidence

Initial project structure and documentation added

The repository was initialized with core project files, including an MIT license, a detailed README.md outlining the Yummy app's architecture and tech stack, and a .gitignore configuration. Additionally, the gradlew script was made executable.

(repo-wide) · high confidence

Integrate Firebase Crashlytics for production error reporting

The app now reports crash and error data to Firebase Crashlytics in production builds, while continuing to use Timber for debug logging. A new CrashlyticsTree implementation captures log messages and exceptions, allowing developers to monitor application health and debug issues more effectively in the live environment.

app/src/main/java/com/flexcode/yummy · high confidence

Behavioural changes

Added release build metadata for the Android APK

A new file, app/release/output-metadata.json, has been added to the project. This file contains metadata for the release variant of the application, specifically identifying the artifact as an APK with the application ID 'com.flexcode.yummy', version code 5, and version name 1.1.2. This change provides the build system with the necessary information about the generated release artifact.

app/release · high confidence

Custom typography and color palette updates

The app's UI theme was updated with new color definitions (AntiFlashWhite, Graffiti, Black, MatteBlack, SurfaceOverlay) and expanded dark/light color palettes. The theme now dynamically sets the status bar color based on the active theme. Typography was enhanced with custom fonts (Lato, LatoBold, ChunkFive) applied to body, header, and button styles.

app/src/main/java/com/flexcode/yummy/ui · high confidence

Meals screen refactored with new event handling and UI updates

The Meals screen has been restructured into its own package and now features a new event-driven architecture for handling user interactions. Users can now clear the search text via a dedicated action, and category selection is handled through a new OnClickCategoryItem event. The UI has been updated with a floating action button for in-app purchases, improved night mode support, and visual enhancements like placeholder images and updated typography. The search field now closes the keyboard on submit and includes a clear button.

_app/src/main/java/com/flexcode/yummy/presentation/meals\screen · high confidence

Redesigns the meal details header with an overlaid title and back button

The meal details screen now displays the meal image in a header area with the meal title and back button overlaid on top, rather than stacked vertically. The title text is now white and centered, and the back button is also white, improving visibility against the image. Hardcoded strings for 'Ingredients' and 'Procedure' headers have been replaced with string resources. Additionally, the font size for the procedure text was increased from 15.sp to 16.sp, and the test list items were updated to use 14.sp font size.

_app/src/main/java/com/flexcode/yummy/presentation/meal\details · high confidence

Relocates shared utilities to the common module

The 'common' module now contains shared code previously located in the 'app' module. Specifically, the 'Constants' and 'Resource' utility classes have been moved to 'common/src/main/java/com/flexcode/yummy/common/utils', with their package names updated to reflect the new location. Additionally, the common module now includes an AndroidManifest.xml, ProGuard rules, and an instrumented test class, establishing it as the central repository for shared application logic.

common · medium confidence

Removed GetMealsUseCase from the domain layer

The GetMealsUseCase class, which previously encapsulated the logic for fetching meals from the repository, has been removed from the domain layer. This change eliminates the intermediate use-case abstraction for retrieving meal data, likely as part of a broader refactoring of the application's dependency injection and use-case structure.

_app/src/main/java/com/flexcode/yummy/domain/use\case · medium confidence

Removed obsolete Categories data model

The Categories data class, which previously mapped category fields such as idCategory, strCategory, and strCategoryDescription, has been removed from the domain models. This eliminates unused code and simplifies the domain layer by removing a model that is no longer required for the application's current functionality.

app/src/main/java/com/flexcode/yummy/domain/models · high confidence

Removed obsolete data layer components

The application's legacy data layer has been removed, including the \ApiService\ interface, the \MealsDatabase\ Room database configuration, and the associated DTO classes (\CategoriesDto\, \MealResponse\, \MealsDto\). This change eliminates the previous implementation for fetching and storing meal and category data, likely as part of a broader refactoring of the app's data architecture.

app/src/main/java/com/flexcode/yummy/data · high confidence

Removed the monolithic AppModule for dependency injection

The single AppModule object, which previously provided all Hilt dependencies—including the Retrofit client, OkHttp configuration, Room database, and repository instances—has been removed. This change consolidates the application's dependency injection setup, likely as part of a broader refactoring to modularize or restructure the DI modules.

app/src/main/java/com/flexcode/yummy/di · medium confidence

Restructured data layer with new repository and DAO implementations

The data module has been restructured to separate concerns, introducing new repository implementations (CategoriesRepositoryImpl, MealsRepositoryImpl) that now explicitly depend on their respective DAOs (CategoriesDao, MealsDao) rather than a shared MealsDao. The codebase was migrated from Groovy to Kotlin DSL for the build configuration, and the module was renamed from 'core' to 'common' in the project structure. Additionally, new unit and Android tests were added for the API service and category data access object, and the local database schema was updated to include a unique index on the meals entity's source field.

data · medium confidence

Restructured domain layer with new use cases and repository updates

The domain layer has been restructured, moving from the app module to a dedicated domain module. This includes the addition of new use cases (GetMealsByCategoryUseCase, GetMealsUseCase) and a UseCaseContainer for dependency injection. Repository interfaces (CategoriesRepository, MealsRepository) have been updated to remove suspend modifiers from their functions, and the package structure has been adjusted to reflect the new module organization.

domain · high confidence

Updated Gradle wrapper to version 7.5

The Gradle wrapper has been upgraded from version 7.3.3 to 7.5. This change updates the underlying build tooling used to compile and run the application, which may introduce new features, performance improvements, or compatibility changes in the build process.

gradle · high confidence

Welcome screen adopts Material Theme colors and typography

The Welcome screen now uses Material Design theme properties for colors and typography, replacing hardcoded values. Text and button colors now dynamically adapt to the current theme (e.g., dark mode), and the title text uses the h1 typography style instead of a fixed monospace font.

_app/src/main/java/com/flexcode/yummy/presentation/welcome\screen · high confidence

Test coverage

Added Android UI and API integration tests; Added Android instrumentation tests for the CategoriesDao; Updated ExampleUnitTest to use JUnit 5 annotations.

Dependencies

Centralized dependency and SDK version management

The buildSrc module now centralizes all third-party library versions and SDK configuration. This includes defining minimum (24) and maximum (33) SDK levels, and managing versions for AndroidX, Compose, Coroutines, Accompanist, Navigation, Coil, Firebase, Dagger/Hilt, Retrofit, Room, Timber, In-App Purchases, and various testing libraries. This change standardizes versioning across the project, ensuring consistent library usage and simplifying future updates.

buildSrc · high confidence

Migrated Android build configuration from Groovy to Kotlin DSL

The project's build system has been refactored from Groovy (build.gradle) to Kotlin DSL (build.gradle.kts). This change introduces a centralized base.gradle file to manage shared dependencies and configurations across modules, and updates the Gradle plugin versions (e.g., AGP 7.4.0, KSP 1.7.20-1.0.6). Additionally, Gradle performance and caching settings have been enabled in gradle.properties.

(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

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

Lenses

  • Code Health 100 → 98 (-1.7)
  • Architecture 100 → 80 (-19.5)
  • Maturity 65 → 65 (+0.0)
  • Readiness 50 → 46 (-4.0)
  • Security 63 → 93 (+30.1)
  • Domain Modelling 100 → 70 (-30.3)

Resolved (15)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (16 lines × 2) (data/src/main/java/com/flexcode/yummy/data/remote/mapper/MealsMapper.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Rotate the exposed credentials — git history can't be un-committed
  • Secret: gcp-api-key (app/google-services.json)
  • Test reliability not included
  • There is no Tech Stack or Data Source documentation in the visible text. (README.md)
  • dormant codebase — no living knowledge left to concentrate

New (17)

  • 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 (51 lines × 3) (data/src/main/java/com/flexcode/yummy/data/remote/mapper/MealsMapper.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • MethodTooLong: MealsScreenKt.MealsScreen (app/src/main/java/com/flexcode/yummy/presentation/meals_screen/MealsScreen.kt)
  • No ADRs found
  • No dependency advisory monitoring
  • Workflow token permissions not restricted

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

Survey your own repository

Felix-Kariuki/Yummy 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 0bf746866f29d9bd39595515e94f3d82a14cea9f — 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.