Skip to content
CAI
Software that uses CAICheck a score

Ashish0077/ToDo_App_Android

43.5

Weak · 21 September 2026

691

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 to-do list application that manages tasks with titles, descriptions, and priority levels. It features a local Room database layer that supports creating, updating, and deleting items, as well as searching and sorting by priority. The user interface allows users to add, edit, and remove tasks, with a list view that supports swipe-to-delete and real-time search filtering.

Features

Add data models for Todo items and priorities

Introduced new data models to support the application's core functionality. Added a Priority enum class defining High, Medium, and Low priority levels. Added a ToDoData data class representing a to-do item with an auto-generated ID, title, description, and priority, mapped to a 'todo\_table' in the database.

app/src/main/java/com/example/todoapp/data/models · high confidence

The app now includes a ListFragment that displays all to-do items in a staggered grid layout. Users can swipe left on an item to delete it, with an undo option provided via a Snackbar. The list also supports searching through the database, with a 500ms debounce on the search input to optimize performance. Additionally, the menu allows users to delete all items or sort by priority.

app/src/main/java/com/example/todoapp/fragments/list · medium confidence

Added ToDoViewModel to manage todo list operations

A new ToDoViewModel class has been introduced to handle todo data operations, including inserting, updating, and deleting individual items, as well as deleting all items. It also exposes LiveData for retrieving all data, sorting by high and low priority, and searching the database.

app/src/main/java/com/example/todoapp/data/viewmodel · medium confidence

Added UpdateFragment for editing and deleting todo items

Users can now edit existing to-do items and delete them individually. The new UpdateFragment allows users to modify a to-do's title, description, and priority via a form, with changes saved through the menu. Additionally, a delete option in the menu triggers a confirmation dialog; confirming removes the item and navigates back to the list. The implementation uses ViewBinding and Safe Args to pass the selected item's data.

app/src/main/java/com/example/todoapp/fragments/update · high confidence

Initial Room database layer for Todo app

The app introduces a new local data layer using Room. A Converter class handles serialization of the Priority enum to/from a String for the database. The ToDoDao interface defines SQL queries for inserting, updating, and deleting Todo items, as well as searching by title and sorting by priority (high to low and low to high). The ToDoDatabase class provides a singleton instance of the Room database, linking the TodoData entity to the database schema.

app/src/main/java/com/example/todoapp/data · medium confidence

Introduces ToDoRepository for data access

A new ToDoRepository class has been added to the app's data layer, providing a unified interface for managing To-Do items. It exposes LiveData for retrieving all items and methods for inserting, updating, and deleting individual or all items. Additionally, it includes functionality to search the database by query and sort items by high or low priority.

app/src/main/java/com/example/todoapp/data/repository · high confidence

Behavioural changes

Add Fragment implements data insertion and validation

The AddFragment now allows users to create new to-do items. It uses ViewBinding to access UI components and a SharedViewModel to handle data validation and priority parsing. When the user submits the form, the fragment validates the title and description, constructs a ToDoData object, and inserts it into the database via the ToDoViewModel.

app/src/main/java/com/example/todoapp/fragments/add · high confidence

Centralized priority handling and empty state visibility

The app now uses a shared view model and binding adapters to manage common logic across fragments. Users will see a 'no data' placeholder when the database is empty, and priority selection in forms will now display color-coded text (red for High, yellow for Medium, green for Low) to improve clarity.

app/src/main/java/com/example/todoapp/fragments · high confidence

Improved list update performance with DiffUtil

The ListAdapter now uses a custom DiffUtil callback (ToDoDiffUtil) to calculate differences between old and new data sets. This change replaces manual list updates with a more efficient diffing mechanism, which improves the performance of RecyclerView updates by only updating the items that have actually changed.

app/src/main/java/com/example/todoapp/fragments/list/adapter · high confidence

MainActivity adopts View Binding and Navigation UI integration

The main activity now utilizes View Binding to inflate the layout and access UI components, replacing the previous setContentView approach. Additionally, it integrates with the navigation controller to set up the action bar and handle the back/up navigation.

app/src/main/java/com/example/todoapp · high confidence

Fixes

New utility functions for keyboard management and LiveData observation

Added a new utility class containing helper functions for the app. The first function hides the soft keyboard when an activity loses focus, addressing the issue where the keyboard would push views up and fail to hide itself. The second function provides a way to observe a LiveData value only once, automatically removing the observer after the first emission, which helps prevent memory leaks and redundant updates.

app/src/main/java/com/example/todoapp/utils · medium confidence

Dependencies

Update Kotlin and AndroidX dependencies

The project has been updated to use Kotlin 1.4.31 and AndroidX Navigation 2.3.4, replacing the previous 1.4.30 and 2.3.3 versions respectively. Additionally, the build configuration now includes the Maven Central repository.

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

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 71 (new)
  • Maturity 37 → 37 (+0.0)
  • Readiness 24 → 24 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (6)

  • 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
  • change coupling unreadable for .kt — no production change history could be paired for this repository's own source
  • single-maintainer — knowledge-concentration (bus factor) risk

New (5)

  • 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)
  • No ADRs found

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

Survey your own repository

Ashish0077/ToDo_App_Android 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 419aaf610535a55e8431e17a63936d4e4451bcc2 — 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.