android/architecture-samples
68.4
Adequate · 22 September 2026
3.3k
lines of production code
Kotlin
primary language
5
measurements over time
What this system is
This system is an Android application for managing tasks, featuring a modernized user interface built with Jetpack Compose and Material 3. It implements a clean architecture with a Hilt-based dependency injection graph, separating concerns between the UI, view models, and a data layer that persists tasks locally via Room and synchronizes with a network source. The codebase includes comprehensive test coverage, utilizing Hilt test modules and custom runners to validate both unit and integration scenarios.
How it got here
2015–2019 — Compose UI migration and modernization
14 changes.
This period was defined by the comprehensive migration of the Android application's user interface to Jetpack Compose, replacing the previous XML-based views across all screens. The work also included modernizing the build system with Gradle Kotlin DSL and significantly refactoring the data layer to use Room and modern async handling.
2022–2023 — Dependency injection and test infrastructure
8 changes.
This period focused on modernizing the application's architecture by introducing Hilt for dependency injection and establishing a robust testing infrastructure. The team added comprehensive integration and unit tests for key screens and data sources, supported by a new shared-test module and Gradle configuration for code formatting.
Features
Added Hilt test support for debug builds
A new HiltTestActivity and its corresponding AndroidManifest entry have been added to the debug source set. This enables Hilt dependency injection in test activities, facilitating better testing of components that rely on Hilt's injection.
app/src/debug · high confidence
Initial project setup with architecture samples and contributor guidelines
The repository is initialized with essential project files including a README detailing the Android architecture samples, a CONTRIBUTING guide for contributors, a standard Apache 2.0 LICENSE, a .gitignore configuration, a codeowners file, and Gradle wrapper scripts. This establishes the foundational structure for the Android Architecture Samples project.
(repo-wide) · high confidence
Introduces Hilt dependency injection modules for coroutines and data sources
The application now uses Hilt for dependency injection, adding new modules that provide coroutine dispatchers (IO, Default, and ApplicationScope) and bind data source implementations (TaskRepository, NetworkDataSource, and Room database) to their interfaces. This change enables the app to manage background tasks and data access through a structured, testable DI graph.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/di · high confidence
Migrated the tasks list screen to Jetpack Compose
The tasks list screen has been rewritten using Jetpack Compose, replacing the previous implementation. This includes a new Compose-based UI (TasksScreen) and a corresponding ViewModel (TasksViewModel) that manages the task list state, filtering (all, active, completed), and user messages via StateFlow. The change introduces a modern, declarative UI layer for the tasks feature.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks · high confidence
New shared-test module with test utilities and fake implementations
Added a new shared-test module containing test infrastructure and fake implementations to support unit and integration testing. This includes a CustomTestRunner for Hilt test initialization, a MainCoroutineRule for managing the main coroutine dispatcher in tests, and fake data sources (FakeTaskRepository, FakeTaskDao, FakeNetworkDataSource) that allow tests to interact with in-memory or controlled data. Additionally, Dagger Hilt test modules (DatabaseTestModule, RepositoryTestModule) are provided to replace production dependencies with test doubles, enabling isolated testing of components without relying on external systems.
shared-test · high confidence
Statistics screen migrated to Jetpack Compose
The Statistics screen has been rewritten using Jetpack Compose, replacing the previous XML-based implementation. This update introduces a new \StatisticsScreen\ composable that leverages Hilt for dependency injection and \StateFlow\ to manage UI state, providing a more modern and declarative user interface for viewing task statistics.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics · high confidence
Behavioural changes
Add standardized copyright headers for Spotless
Added new copyright header templates for Kotlin (.kt, .kts) and XML (.xml) files to the Spotless configuration. These files define the standard license header text that Spotless will apply to source files, ensuring consistent copyright notices across the project.
spotless · high confidence
Add/Edit Task screen migrated to Jetpack Compose
The Add/Edit Task screen has been rewritten using Jetpack Compose, replacing the previous XML-based implementation. This change updates the user interface to use modern Android UI components, providing a more responsive and consistent experience within the app's Material 3 design system.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask · high confidence
Added Gradle init script for Spotless to support configuration cache
A new Gradle init script (init.gradle.kts) has been added to configure Spotless for Kotlin, KTS, and XML files. This change enables Spotless to run in a Gradle configuration-cache-compliant manner, addressing the fact that the Spotless plugin itself is not fully compatible with the configuration cache. The script applies the Spotless plugin to all subprojects, configuring ktlint for Kotlin files, license headers for KTS and XML files, and excludes build directories.
gradle · high confidence
Added ProGuard configuration for Android testing codelab
New ProGuard rules files (proguard-rules.pro and proguardTest-rules.pro) were added to the app module. These configurations preserve classes and methods required for Android testing frameworks (Espresso, JUnit, Hamcrest) and specific architecture components (Room, Guava), ensuring that test-related code is not stripped or obfuscated during the build process.
app · medium confidence
Local task storage refactored to new Room-based data layer
The local data source for tasks has been replaced with a new Room database implementation. This introduces a new data model (LocalTask) and a corresponding Data Access Object (TaskDao) to manage task persistence. Users will experience improved local data handling for tasks, including support for observing task lists and individual tasks via Kotlin Flows, as well as efficient upsert and delete operations.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/data/source/local · high confidence
Migrate UI utilities to Compose and modernize async handling
The app's utility layer has been modernized to support the new Compose-based UI. New Compose components have been added for the navigation drawer (AppModalDrawer, AppDrawer), top app bars (TasksTopAppBar, StatisticsTopAppBar, TaskDetailTopAppBar, AddEditTaskTopAppBar), and a swipe-to-refresh loading state (LoadingContent). Additionally, a new Async sealed class replaces the previous Result-based approach for handling async states, and coroutine utilities have been updated to use StateFlow and modern sharing strategies.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/util · high confidence
Migrate app to Compose UI and Material 3 theming
The app's main activity and navigation graph have been migrated from the traditional View system to Jetpack Compose. This introduces a new Compose-based UI layer, including a Compose-based TodoActivity, TodoNavGraph for navigation, and a TodoTheme for Material 3 styling. Users will experience the app's interface built with modern Compose components, while the underlying navigation and state management logic remains consistent.
app/src/main/java/com/example/android/architecture/blueprints/todoapp · high confidence
Refactored data layer with new repository and model classes
The app's data layer has been restructured to use a new DefaultTaskRepository that manages task persistence and synchronization. This change introduces a dedicated Task data model, a NetworkTask model for remote data, and extension functions in ModelMappingExt to convert between local, network, and external representations. The repository now handles task creation, updates, and state changes while coordinating with a simplified NetworkDataSource interface and its TaskNetworkDataSource implementation.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/data · high confidence
Task detail screen migrated to Jetpack Compose
The task detail screen has been rewritten using Jetpack Compose, replacing the previous XML-based implementation. This introduces a new \TaskDetailScreen\ composable that renders the task title, description, and completion status, while the \TaskDetailViewModel\ now exposes a \StateFlow\-based \uiState\ to drive the UI. Users will see the same task details and actions (edit, delete, mark complete) but with a modernized UI framework.
app/src/main/java/com/example/android/architecture/blueprints/todoapp/taskdetail · high confidence
Test coverage
Added end-to-end and integration tests for the tasks module; Added integration tests for statistics and task detail screens; Added integration tests for the Add/Edit Task screen; Added unit tests for core app components; Added unit tests for the local TaskDao.
Dependencies
Migrate build system to Gradle Kotlin DSL and version catalogs
The project has been converted from Groovy-based build scripts to Gradle Kotlin DSL (build.gradle.kts), introducing a centralized version catalog (libs.versions.toml) to manage dependency versions. This change standardizes dependency declarations across the app and shared-test modules, improving maintainability and consistency in the build configuration.
(dependencies) · high confidence
Updated Gradle wrapper to version 8.11.1
The project's Gradle wrapper has been updated to use Gradle 8.11.1, ensuring that builds are executed with this specific version of the Gradle build tool.
gradle/wrapper · 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 69 → 68 (-0.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (-0.4)
- Architecture 100 → 86 (-13.7)
- Maturity 55 → 55 (+0.0)
- Readiness 70 → 70 (+0.0)
- Security 85 → 92 (+6.7)
Resolved (5)
- 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
- dormant codebase — no living knowledge left to concentrate
New (13)
- 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)
- 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)
- TodoComment (app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreenTest.kt)
- TodoComment (app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics/StatisticsViewModel.kt)
- 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
android/architecture-samples 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 ee66e1526b84c026615df032c705842b7d2a521f — 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-821afab8930d.