Skip to content
CAI
Software that uses CAICheck a score

burhanrashid52/WhatTodo

58.6

Adequate · 19 September 2026

2.8k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

WhatTodo is a cross-platform task management application built with Flutter that supports Android, iOS, and macOS. It provides core productivity features including the creation and organization of tasks, projects, and color-coded labels, with data persisted locally via SQLite. The system employs the BLoC pattern for state management and includes automated deployment pipelines for both Google Play and TestFlight.

How it got here

2018 — Initial project scaffolding and core feature implementation

17 changes.

This period established the foundational structure of the WhatTodo Flutter application, including platform-specific configurations for Android and iOS. It introduced the core BLoC-based state management architecture and implemented essential features such as task, project, and label management with local SQLite persistence.

2020–2024 — multi-platform expansion and CI automation

6 changes.

The project expanded its reach by adding native macOS desktop support and automating release pipelines for both iOS and Android using Fastlane. Concurrently, comprehensive testing infrastructure was established, including unit, widget, and integration tests to ensure reliability across core components and screens.

Features

Add Project feature with color-coded project management

Users can now create new projects with a custom name and a color-coded label via the Add Project screen. The application manages project data using a local SQLite database, exposing project lists and color selection state through a BLoC pattern. These projects are displayed in an expandable tile within the side drawer, allowing users to filter their view by selecting a specific project.

lib/pages/projects · high confidence

Add and manage labels with color coding and duplicate prevention

Users can now create new labels with a name and a specific color from a collapsible palette in the Add Label screen. The system prevents creating duplicate labels by checking for existing names before saving. Labels are displayed in an expandable section within the side drawer, where tapping a label applies a filter to the task list, and a dedicated 'Add Label' option allows users to open the creation form.

lib/pages/labels · high confidence

Add macOS desktop support

The application now runs on macOS. This change adds the complete macOS platform directory, including the Xcode project, build configurations, and native Swift entry points (AppDelegate, MainFlutterWindow). It registers Flutter plugins for package info, path provider, SQLite, and URL launching, and configures the app bundle as "WhatTodo" with the identifier "--platformsmacos.whatTodo".

macos · high confidence

Added SQLite database layer for tasks, projects, and labels

Introduced a new singleton database class (AppDatabase) in lib/db that initializes a local SQLite database containing tables for projects, tasks, and labels. This change adds the underlying persistence logic for the application's core data models, including schema creation and initial data seeding (e.g., an 'Inbox' project).

lib/db · high confidence

Added iOS Fastlane automation for TestFlight distribution

Added Fastlane configuration files (Appfile, Fastfile, Matchfile) to automate the iOS beta release process. The new \beta\ lane handles code signing via Match (using a dedicated Git repository for keys), increments the build number, sets the version number from the Flutter build name, builds the app, and uploads the beta to TestFlight using a stored API key.

ios/fastlane · high confidence

Android app initialization and configuration for Flutter v2 embedding

The Android app module has been initialized with the necessary configuration files to support the Flutter v2 embedding. This includes setting the package name to 'ja.burhanrashid52.whattodo', defining the main activity as a FlutterFragmentActivity, and configuring the AndroidManifest.xml with required internet permissions, intent queries for HTTPS and mailto schemes, and setting the main activity as exported (required for Android 12+). A basic white splash screen and launch theme have also been added.

android/app · high confidence

Automated Android deployment to Google Play via Fastlane

Added Fastlane configuration (Appfile, Fastfile, and documentation) to the Android build pipeline, enabling automated release builds and uploads to the Google Play Store internal track. The setup reads version metadata from Flutter environment variables and packages the release APK for upload.

android/fastlane · high confidence

Initial app shell with adaptive home layout

The application now initializes with a main entry point that sets up a Material theme and provides a HomeBloc for state management. The home screen is adaptive: on wider screens, it displays a side drawer alongside a content area that switches between views (Home, About, Add Task, Completed Tasks, Add Project, Add Label) based on the current screen state, while narrower screens show a standard single-page home view.

lib · high confidence

Initial iOS project scaffolding for WhatTodo

The iOS application structure has been established with the standard Flutter Runner configuration. This includes the app delegate implementations for both Objective-C and Swift, the main entry point, and the bridging header required for plugin integration. The app bundle is configured with the name 'WhatTodo', and the Info.plist sets the short version string to the Flutter build name and the build number to the Flutter build number. Visual assets are provided, including a complete set of app icons for iPhone and iPad, a launch screen storyboard, and the necessary asset catalogs.

ios/Runner · high confidence

Initial iOS project structure and build configuration

The iOS build system is now established with the standard Xcode project and workspace files required to compile and run the application. This includes the project configuration (project.pbxproj) defining the Runner target, source files, and resources, as well as the workspace setup (contents.xcworkspacedata) that links the project with the CocoaPods dependencies (Pods.xcodeproj). Additionally, build schemes and workspace settings are configured to enable building, testing, and launching the app in Xcode.

ios/Runner.xcodeproj · high confidence

Initial project setup and documentation

This change establishes the foundational structure of the 'WhatTodo' Flutter application. It introduces standard project configuration files, including a \.gitignore\ tailored for Flutter/Dart development and a \.metadata\ file tracking the Flutter beta channel (revision 3ea4d06). The entry also adds essential community documentation: a \CODE\_OF\_CONDUCT.md\ based on the Contributor Covenant, a \CONTRIBUTING.md\ guide for fork-and-pull-request workflows, and a comprehensive \README.md\ detailing the app's BLoC architecture, features (projects, labels, tasks, offline support via Sqflite), and usage instructions. Additionally, a \shorebird.yaml\ file is added to configure the Shorebird over-the-air update service with a specific app ID.

(repo-wide) · high confidence

Introduction of Home screen with adaptive navigation and side drawer

The home screen now features a new layout that adapts to screen width: on wider screens, the navigation drawer is hidden, while on smaller screens, it is accessible via a leading menu icon. The side drawer allows users to filter tasks by project, label, or time-based views (Inbox, Today, Next 7 Days) and provides navigation to the About screen. The main body displays tasks using a dedicated TasksPage widget, and a floating action button enables adding new tasks. A popup menu in the app bar provides access to completed tasks. The home bloc manages title updates and filter streams, coordinating with the task bloc to update the displayed task list based on user selections.

lib/pages/home · high confidence

Introduction of custom BlocProvider for state management

The application now includes a custom BlocProvider widget in the lib/bloc directory, enabling the injection of BlocBase instances into the widget tree. This provider allows child widgets to access the associated bloc instance via a static of method, facilitating a state management pattern where business logic is separated from UI components.

lib/bloc · high confidence

Introduction of utility libraries and custom UI components

The application now includes a set of new utility files in the lib/utils directory to support core functionality and UI consistency. This includes a custom CollapsibleExpansionTile widget for handling expandable lists, helper utilities for launching URLs and displaying snackbars, and constants for padding, font sizes, and social links. Additionally, new files define data models for task priorities, color palettes for visual theming, date formatting helpers, and a collection of static keys for internationalization and widget identification.

lib/utils · high confidence

The app now includes an About screen that displays the current application version (retrieved via package\_info\_plus), provides direct links to report issues and view the project on GitHub, lists the author's contact details, and includes social media buttons for Twitter and Facebook.

lib/pages/about · high confidence

Task management UI and data layer

The app now includes a dedicated interface for creating new tasks, allowing users to set a title, assign a project, choose a due date, select a priority level, and attach labels. Completed tasks are displayed on a separate screen where they can be restored to pending status via a swipe gesture. The main task list supports swipe actions to either mark a task as complete or delete it, with visual feedback provided by colored backgrounds and snackbar notifications. These changes are backed by a new data layer that handles task storage, status updates, and relationships with projects and labels.

lib/pages/tasks · high confidence

Behavioural changes

Added iOS Flutter framework configuration files

The iOS build configuration now includes the AppFrameworkInfo.plist, Debug.xcconfig, and Release.xcconfig files. These additions establish the Flutter app framework metadata, set the minimum iOS deployment target to 12.0, and configure the build system to include necessary CocoaPods and generated configuration files for both debug and release modes.

ios/Flutter · high confidence

Introduction of BLoC pattern for task management and creation

The task management UI logic has been refactored to use the BLoC (Business Logic Component) pattern, introducing two new state management classes: \TaskBloc\ and \AddTaskBloc\. \TaskBloc\ now handles the retrieval, filtering (by today, next week, project, label, or status), updating, and deletion of tasks, exposing them via streams to the UI. \AddTaskBloc\ manages the state for creating new tasks, including selecting projects, labels, priority, and due dates, and orchestrating the task creation process. This change separates business logic from the presentation layer, improving testability and maintainability of the task features.

lib/pages/tasks/bloc · high confidence

Test coverage

Added integration test driver entry point; Added integration tests for core app screens; Added unit and widget tests for core app components.

Dependencies

Updated Gradle wrapper to version 7.5

The Android build system now uses Gradle 7.5 via the wrapper configuration. This ensures consistent build environments across development and CI by pinning the specific Gradle distribution version.

android/gradle · high confidence

Housekeeping

Added iOS build configuration and ignore rules

The iOS directory now includes a .gitignore file to exclude build artifacts, IDE settings, and generated Flutter files from version control, and an exportOptions.plist file configured for App Store Connect distribution using specific provisioning profiles.

ios · 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

Baseline

  • First survey — no prior run to compare against. CAI 59.

Lenses

  • Code Health 96
  • Architecture 100
  • Maturity 48
  • Readiness 50
  • Security 72
  • Domain Modelling 100

Changes since last survey

  • 219 commits — 204 feature/other, 15 fixes

By area

  • lib/pages — 68 commits
  • (root) — 40 commits
  • .github/workflows — 20 commits
  • android/app — 15 commits
  • (repo) — 12 commits
  • ios/Runner — 7 commits
  • ios/fastlane — 6 commits
  • android/fastlane — 5 commits
  • lib/db — 5 commits
  • lib/models — 4 commits
  • ios/Gemfile.lock — 3 commits
  • lib/chat_screen.dart — 3 commits
  • macos/Runner — 3 commits
  • integration_test/completed_tasks_page_test.dart — 2 commits
  • ios/Flutter — 2 commits
  • ios/Runner.xcodeproj — 2 commits
  • lib/home.dart — 2 commits
  • lib/main.dart — 2 commits
  • lib/taskpages — 2 commits
  • android/build.gradle — 1 commit

Notable commits

  • fix: App name fix to WhatTodo
  • fix: Clip dismissible and fix swipe icon alignment
  • fix: Dart fix
  • fix: Fastlane ios path fix
  • fix: Fix Drawer and popup icon
  • fix: Fix clean db issue in tests
  • fix: Fix workflow version
  • fix: Fixed Type #5
  • fix: Iphone and ipad icon fix
  • fix: Package name fix in MainActivity
  • fix: Podfile fix iOS
  • fix: Remove web and fixed ios arch issue
  • fix: Url launch error fixed.
  • fix: [#17] CR Fixes and run_all script
  • fix: fix migration
  • change: #16 Migrated to AndroidX
  • change: #17 Adding Integration Test for home screen
  • change: About Page
  • change: Adaptive Add Label page
  • change: Adaptive Add project page
  • …and 199 more

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

Survey your own repository

burhanrashid52/WhatTodo 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 19 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 db6ba701a4b71cf15ee6c53646c05cbff247863f — 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-13a154b7f5d1.