Felix-Kariuki/Yummy
59.9
Adequate · 21 September 2026
1.9k
lines of production code
Kotlin
primary language
4
measurements over time
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.