Skip to content
CAI
Software that uses CAICheck a score

time-mastery/pmodoro-application

61.4

Adequate · 21 September 2026

8.2k

lines of production code

Dart

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a cross-platform productivity application built with Flutter, designed to help users manage tasks, track habits, and maintain focus through a Pomodoro timer. The system implements a clean architecture with a BLoC-based state management layer, supporting user authentication, local data persistence via Drift, and multi-language localization. It provides features for task and habit CRUD operations, timer state management, and configurable user settings, all wrapped in a consistent UI with dark mode support.

How it got here

2022 — Task management and timer feature implementation

33 changes.

This period focused on implementing the core task management and Pomodoro timer features, including domain models, repositories, and BLoC state management. The work also established a centralized architecture with dependency injection, global state management, and reusable UI components to support these new functionalities.

2023 — Feature expansion and architecture modernization

28 changes.

This period focused on implementing core application features, including habit tracking, task management, and user authentication, while simultaneously modernizing the underlying architecture. The team introduced a new local database implementation using Drift, replaced Isar, and established a comprehensive settings management system with corresponding BLoCs and UI components.

Features

Add AnalysisBloc for task management analysis

Introduced a new AnalysisBloc in the task management feature to handle analysis-related events and states. The bloc manages the lifecycle of fetching analysis data, transitioning through initial, loading, success, and failure states, and utilizes a GetAnalysisUseCase to retrieve analysis entities.

_lib/features/task\_management/presentation/blocs/analysis\bloc · high confidence

Add DateTime and SizedBox extension utilities

Users can now format dates and create spacing widgets more concisely via new Dart extensions. The DateTime extension provides task-specific time (HH:mm a) and date (yyyy-MM-dd) formatting, while the num extension adds spaceH() and spaceW() methods to generate SizedBox widgets for vertical and horizontal spacing.

lib/core/extensions · high confidence

Add German, English, and Persian translations for the app

The app now supports German (de), English (en), and Persian (fa) locales. This change introduces the corresponding .arb files in lib/l10n, providing the translated strings for UI elements such as tabs, settings, task management, and habit tracking, enabling users to view the application interface in their preferred language.

lib/l10n · high confidence

Add HabitModel for local data persistence

A new HabitModel class has been introduced in the habit tracking feature to handle the mapping between domain entities and local database records. This model includes fields for title, description, icon, color, and a unique UUID, and provides methods for JSON serialization and database collection conversion, enabling the app to store and retrieve habit data locally.

_lib/features/habit\tracking/data/models · high confidence

Add HomeBloc to manage home screen data and daily goals

A new HomeBloc has been introduced to handle the presentation logic for the home screen. It integrates with domain use cases to fetch uncompleted tasks and daily information, and manages the lifecycle for checking and saving daily goals. The implementation includes specific events (HomeDataFetched, DailyGoalChecked, DailyGoalSaved, DailyGoalUpdated) and corresponding states (Loading, Success, Failure) to drive the UI.

_lib/features/task\_management/presentation/blocs/home\bloc · high confidence

Add domain use cases for configuration settings

The domain layer for the configuration feature now includes six new use cases to manage user preferences: ChangeLocale, ChangeSettings, ChangeTheme, GetLocale, GetSettings, and GetTheme. These classes act as intermediaries that delegate calls to the SettingsRepository, enabling the application to retrieve and update locale, theme, and general settings.

lib/features/configuration/domain/usecases · high confidence

Add habit tracking BLoC for CRUD operations

The habit tracking feature now includes a new BLoC implementation that manages the state for creating, editing, deleting, and marking habits as done. This introduces the core presentation logic for habit tracking, handling events for fetching all habits, adding new ones, updating existing ones, and completing daily tasks.

_lib/features/habit\tracking/presentation/blocs · high confidence

Add habit tracking domain use cases

The habit tracking feature now includes domain use cases for adding, editing, deleting, and retrieving habits, as well as marking habits as done for the day. These use cases wrap repository calls to support the full lifecycle of habit management within the app.

_lib/features/habit\tracking/domain/usecases · high confidence

Add local data source for user settings

A new SettingsLocalDataSources class has been introduced to manage the persistence of user configuration preferences. It handles reading and writing settings such as notifications, sound, vibration, app updates, tips, and ads via local storage, as well as managing locale and theme selections.

_lib/features/configuration/data/data\sources · high confidence

Add notifications page with placeholder UI

A new NotificationsPage is introduced, providing a scaffolded UI for the notification feature. The page displays a header and a list of 100 placeholder notification items, each with a title, description, color, and icon. An empty state is shown when the list is empty, featuring an ice cream icon and a 'no notifications' message. The implementation currently uses hardcoded data and a TODO comment indicates the API connection is pending.

_lib/features/notification\management/presentation/pages · medium confidence

Add user profile and authentication UI screens

The authentication feature now includes complete UI for user profile and authentication flows. A new UserPage displays a ProfileView showing user details (name, email, username) and a logout button. Additionally, an AuthView provides a toggleable sign-in/sign-up form with fields for name, email, and password, along with a 'forget password' link and account creation toggle.

lib/features/authentication · medium confidence

Add weekly spending bar chart widget

A new bar chart widget has been added to visualize weekly spending in pomodoros. The component renders a horizontal bar chart displaying the last 7 days' data, with interactive touch states that highlight the selected day and display a tooltip showing the pomodoro count.

_lib/features/task\_management/presentation/pages/analysis\widgets · high confidence

Added Settings BLoC for managing user configuration

A new Settings BLoC has been introduced to centralize the management of user settings, including theme, language, and general preferences. This component handles fetching initial data (locale and theme), updating settings, and processing changes to language and theme, exposing corresponding loading, success, and failure states to the UI layer.

_lib/features/configuration/presentation/blocs/settings\bloc · high confidence

Added abstract UseCase base class

A new abstract class UseCase\<T, P\> has been added to the core resources, defining a standard interface for use cases with a generic type T for the result and an optional parameter P. This provides a consistent pattern for executing business logic operations.

lib/core/resources · high confidence

Added language and theme selection bottom sheets

Users can now change the app's display language and theme via new bottom-sheet UI components. The 'Change Language' widget presents a list of supported languages (English, Persian/Farsi, German) and triggers a locale change event. The 'Change Theme' widget displays available themes from the app's constants and applies the selected theme via the settings bloc.

lib/features/configuration/presentation/widgets · high confidence

Added local notification service for in-app and background alerts

Users can now receive local notifications within the app, including a welcome notification on first launch and background notifications that display a progress bar during active timers. The new \AppLocalNotification\ service manages notification permissions, initializes channels for standard and background alerts, and handles user interactions with notifications.

lib/core/services/notification · high confidence

Added settings repository implementation for configuration data

A new \SettingsRepositoryImpl\ class has been added to the configuration feature, implementing the \SettingsRepository\ interface. This implementation provides methods to retrieve and change user settings, including locale (language) and theme preferences, by delegating to local data sources. This enables the application to persist and manage user configuration choices.

lib/features/configuration/data/repositories · high confidence

Centralized app theme and styling constants

A new AppConstant class has been introduced to centralize application-wide styling and configuration. This includes default light and dark themes, a 'Polar Night' theme, and shared text styles, font families, and UI dimensions. Users will see consistent styling across the app, with support for multiple color schemes and a specific dark-mode aesthetic.

lib/core/constant · high confidence

Implement task and timer repository logic with local data sources

Added new repository implementations for task management and timer state persistence. The TaskRepositoryImpl now handles CRUD operations for tasks, including adding, retrieving by date, fetching all tasks, and retrieving uncompleted tasks, while also providing methods for daily goal tracking, analysis, and daily information. The TimerRepositoryImpl was introduced to manage saving and restoring Pomodoro session states and timer states, utilizing the respective local data sources for each.

_lib/features/task\management/data/repositories · medium confidence

Implemented local habit tracking repository

Added the domain interface and data-layer implementation for habit tracking, enabling users to add, edit, delete, complete, and retrieve habits stored locally via Isar.

_lib/features/habit\_tracking/data/repositories, lib/features/habit\tracking/domain/repositories · high confidence

Introduce Habit domain entity with UUID and status tracking

A new HabitEntity class has been added to the habit tracking feature, defining the core data model for habits. This entity includes fields for title, description, icon, color, and overviews, along with a unique identifier (id) and a UUID. It also tracks whether a habit is complete today via the isCompleteToday boolean. This change establishes the foundational data structure for habit tracking functionality.

_lib/features/habit\tracking/domain/entities · high confidence

Introduce TimerBloc for managing Pomodoro timer state and persistence

A new TimerBloc has been added to handle the lifecycle of the Pomodoro timer, including starting, pausing, resuming, and resetting the countdown. The implementation introduces events for task selection and deselection, allowing users to associate a timer with a specific task. It also adds states and logic for saving and restoring timer state, as well as saving completed Pomodoro sessions to the database. This centralizes the timer's behavior and UI state management within the task management feature.

_lib/features/task\_management/presentation/blocs/timer\bloc · high confidence

Introduce base BLoC for page index state management

A new base BLoC implementation has been added to handle page index changes. It defines a base event (PageIndexChanged) and state (PageChangeSuccess) to manage navigation state, allowing child BLoCs to inherit this behavior for consistent page index updates.

_lib/features/configuration/presentation/blocs/base\bloc · high confidence

Introduce domain entities for language and app settings

Added new domain entities to the configuration feature: LanguageEntity, which holds a title and language code, and SettingsEntity, which models user preferences for notifications, sound, vibration, app updates, tips, and ads. These entities provide the data structures used to represent and manage configuration state within the application.

lib/features/configuration/domain/entities · high confidence

Introduce domain entities for task management

Added new domain entities to support the task management feature: TaskEntity for core task data, PomodoroEntity for tracking pomodoro sessions, CategoryEntity for task categorization, DailyInformationEntity for daily progress metrics, and AnalysisEntity with YearlyAnalyzeItemEntity for analytical reporting. These entities form the domain layer's data model for the task management feature.

_lib/features/task\management/domain/entities · high confidence

Introduce habit tracking UI with add, edit, and delete capabilities

Users can now access the habit tracking feature, which includes a main list view displaying all habits and an add/edit form for creating or modifying habits. The new AddHabitPage allows users to input a title, description, color, and icon for each habit. The main HabitTrackingPage displays the list of habits and provides actions to add new habits, edit existing ones, or delete them, with the UI updating dynamically based on the state of the HabitTrackerBloc.

_lib/features/habit\tracking/presentation/pages · medium confidence

Introduce new app navigation, settings, and splash screen UI

The app now features a new bottom navigation bar with icons for Home, Tasks, Habit Tracking, Timer, and Settings, allowing users to switch between core sections of the app. A dedicated Settings page has been added, enabling users to toggle notifications, sound, and vibration, as well as change the app's language and theme. Additionally, a new splash screen with a rotating logo animation is displayed on app launch before transitioning to the main navigation.

lib/features/configuration/presentation/pages · high confidence

Introduce task and timer domain repositories

Added new domain-layer interfaces for task management and timer state. The TaskRepository defines methods for creating, retrieving, updating, and deleting tasks, as well as fetching daily and analysis data. The TimerRepository provides interfaces for saving and restoring timer state and recording pomodoro sessions. Both repositories use dartz Either for error handling, establishing the contract for data access in the task management feature.

_lib/features/task\management/domain/repositories · high confidence

Introduce task management BLoC for CRUD operations

Added the TasksBloc and its associated events and states to manage task lifecycle operations including adding, completing, deleting, editing, and filtering tasks. The implementation uses the dartz library to handle asynchronous results, providing loading, success, and failure states for each operation, enabling the UI to react to task management actions.

_lib/features/task\_management/presentation/blocs/tasks\bloc · high confidence

Introduce task management screens and timer interface

Adds new presentation pages for the task management feature, including a home page with daily goals and task lists, an analysis page with charts and heatmaps, and a timer page for managing pomodoro sessions. The update also introduces UI components for adding, editing, and filtering tasks, as well as widgets for the timer countdown and controls.

_lib/features/task\management/presentation/pages · high confidence

Introduces app-wide dependency injection and global state management

The application now uses a centralized dependency injection container (GetIt) to manage services, repositories, and BLoC instances, replacing the previous ad-hoc or hardcoded state management. This change ensures that all core services (audio, vibration, notifications, storage) and feature-specific use cases are properly wired and accessible throughout the app. Additionally, the app initializes global BLoC providers at startup, enabling consistent state handling across the UI.

lib · high confidence

Introduces domain usecases for task and timer state management

The task management feature now includes a comprehensive set of domain usecases that handle core operations such as adding, editing, completing, and deleting tasks, as well as retrieving task lists, daily information, and analysis data. Additionally, new usecases manage the persistence and restoration of timer state, enabling the application to save and restore the current timer configuration.

_lib/features/task\management/domain/usecases · high confidence

Introduces new parameter classes for core domain features

Added new parameter classes to the core resources layer to support habit management, task tracking, timer state, settings, and theming. Specifically, the diff introduces HabitParams and HabitOverviewParams for habit data, TaskParams for task details, TimerStateParams and TimerStateRestoreParams for managing timer states, ChangeSettingsParams for settings updates, and ThemeParams for theme selection. These classes serve as data transfer objects to facilitate communication between the UI and the domain layer.

lib/core/resources/params · high confidence

New data models for task management and analysis

Added new data models for the task management feature, including TaskModel, PomodoroModel, CategoryModel, DailyInformationModel, and AnalysisModel. These models provide serialization (toJson/fromJson) and database mapping (collectionToModel) for the respective domain entities, enabling the app to store and retrieve task, pomodoro, category, daily information, and analysis data.

_lib/features/task\management/data/models · high confidence

New habit item widget for tracking and managing habits

Users can now view individual habits with their associated color, icon, title, and description. Each habit card displays a heatmap of past completions and provides interactive buttons to mark a habit as done for the current day, edit the habit details, or delete the habit entirely.

_lib/features/habit\_tracking/presentation/shared\widgets · high confidence

New home screen widgets for task management

The home screen now displays a goal progress widget showing a circular progress indicator and task completion statistics, a task count widget displaying the number of remaining tasks, and a scrollable list of all tasks with an empty state and add button. These new widgets provide users with an overview of their daily goals and current task status on the home page.

_lib/features/task\_management/presentation/pages/home\widgets · high confidence

New local data sources for task and timer state persistence

The app introduces two new local data sources: TasksLocalDataSource and TimerLocalDataSource. TasksLocalDataSource handles CRUD operations for tasks, including fetching all tasks, uncompleted tasks, tasks by specific date, and analysis data. TimerLocalDataSource manages the persistence and restoration of timer states, including saving pomodoro records, restoring timer state from storage, and cleaning up state after completion or cancellation. These changes enable the app to persist task and timer data locally using the Drift database and file storage.

_lib/features/task\_management/data/data\sources · medium confidence

New notification item widget for consistent UI

A new NotificationItem widget has been added to the notification management feature. It displays a notification with an icon, title, and description, using the app's theme for text styles and a configurable color for the icon background. The layout is responsive, utilizing SizeConfig for dimensions, and includes a spaceW extension for spacing.

_lib/features/notification\management/presentation/widgets · high confidence

New shared UI components and base app bar

The app introduces a suite of reusable UI widgets in the shared\_widgets folder: a BaseAppBar with an animated fade-in and back-button logic, a GlobalButton for consistent action buttons, a GlobalIndicator for loading states, and a GlobalSnack helper for displaying toast messages. Additionally, a CustomFormField is added with password visibility toggling, numeric/rating input formatters, and length validation.

_lib/core/shared\widgets · high confidence

New task management UI components and timer controls

The task management feature now includes a suite of new presentation widgets: a daily goal dialog for setting targets, rich text display for task details, and list items for home and task management views. A new timer duration selector allows users to choose from preset intervals (1 to 120 minutes), and a timer task widget displays active task information. These components enable users to configure daily goals, view task details, and manage timer durations within the task management flow.

_lib/features/task\_management/presentation/shared\widgets · high confidence

New utility helpers for debugging, icon mapping, and time formatting

The app introduces several new utility classes in the core utilities layer to support upcoming features. A debug print helper is added to conditionally log messages during development. An icon converter maps string identifiers to Ionicons, and a ticker class provides a periodic stream for countdown timers. The main Utils class gains methods for formatting time (seconds to minutes/seconds, remaining time calculation, date formatting), generating unique IDs, checking if a date is today, and validating empty strings. These changes provide foundational tools for the UI and business logic layers.

lib/core/utils · high confidence

Project initialization and documentation updates

The repository was initialized with an MIT license file and a comprehensive README page featuring the app's title, feature list, and screenshots. Configuration files were added or updated: an l10n.yaml file was created to define localization paths, the .gitignore was updated to include .fvm/flutter\_sdk and other build artifacts, and the .metadata file was updated with new Flutter SDK revisions. Additionally, the analysis\_options.yaml was modified to enforce specific linting rules (always\_declare\_return\_types, prefer\_double\_quotes) and remove default lint inclusions.

(repo-wide) · high confidence

Behavioural changes

Add settings data model for configuration feature

A new SettingsModel class has been introduced in the configuration feature's data layer. This model extends the existing SettingsEntity and provides serialization logic (toJson/fromJson) to map between the domain entity and a JSON representation containing notification, sound, vibration, app updates, new tips, and ads settings.

lib/features/configuration/data/models · high confidence

Android package and Gradle configuration updates

The Android app's package name has been changed from 'im.mahmoud.pomodoro' to 'com.example.pomodore', requiring a corresponding update to the main activity class location and manifest declarations. Additionally, the project's Gradle wrapper has been upgraded from version 7.4 to 8.3, and the AndroidManifest.xml has been updated to include required queries for text processing and cleartext traffic permissions.

android · medium confidence

Centralized routing configuration for new feature pages

The application's navigation logic has been consolidated into a new central router (lib/core/router/router.dart). This change introduces explicit route mappings for the newly added Habit Tracking, Notification Management, Task Management (including Add, Edit, and Analysis pages), and Configuration (Splash and Base) pages, ensuring all deep links and internal navigations are handled through a single, centralized switch statement.

lib/core/router · high confidence

Introduce SettingsRepository interface for configuration management

A new abstract SettingsRepository interface has been added to the configuration feature's domain layer. This interface defines the core methods for managing application settings, including retrieving and updating general settings, as well as handling locale (language) and theme (appearance) configurations.

lib/features/configuration/domain/repositories · high confidence

Introduce local data source for habit tracking

The habit tracking feature now uses a new local data source that implements CRUD operations (create, read, update, delete) for habits, including completing habits, using a Drift-based database instead of the previous Isar implementation.

_lib/features/habit\_tracking/data/data\sources · medium confidence

Migrate local data persistence from Isar to Drift and secure storage

The app's local database has been replaced from Isar to Drift, introducing new tables for categories, daily goals, habits, habit trackers, pomodoros, and tasks, along with helper methods for CRUD operations. Additionally, a new secure storage service (FStorage) has been added to manage user preferences and timer state using FlutterSecureStorage.

lib/core/services/database · high confidence

Updated macOS Flutter plugin registration

The macOS Flutter engine now registers five additional native plugins: AudioplayersDarwin, AwesomeNotifications, FlutterSecureStorage, IsarFlutterLibs, and PathProvider. This enables audio playback, push notifications, secure local storage, local database operations, and file path resolution on macOS.

macos/Flutter · high confidence

Updated macOS app icon assets and window configuration

The macOS application now includes properly structured asset catalogs for 256px and 512px icons, with new Contents.json files defining the asset hierarchy. The app icon set has been updated to use specific filename references (e.g., app\_icon\_256-1.png) and explicit size attributes, ensuring correct icon rendering across all resolutions. Additionally, the main window configuration has been adjusted to hide the window on startup, changing the behavior from a custom frame with startup hiding to simply hiding on startup.

macos/Runner · medium confidence

iOS app renamed to 'Pomodore' and configured for background audio

The iOS application's display name and bundle name have been updated from 'Pomodoro' to 'Pomodore'. Additionally, the app's configuration has been updated to include the 'audio' background mode and enable arbitrary network loads, while also removing the deprecated 'UIViewControllerBasedStatusBarAppearance' setting.

ios · high confidence

macOS app bundle renamed to 'Pomodore.app' and deployment target updated

The macOS application bundle has been renamed from 'pomodoro.app' to 'Pomodore.app' across the Xcode project and scheme configurations. Additionally, the macOS deployment target has been raised from 10.11 to 10.14, and the Xcode project file format has been updated to version 54.

macos/Runner.xcodeproj · high confidence

Test coverage

Added model tests for task management data layer; Added tests for the Settings model; Added unit tests for core utility functions; Added unit tests for the HomeBloc; Added unit tests for the Settings BLoC; Added unit tests for the TasksBloc; Added unit tests for the TimerBloc; Updated test import to match app name change.

Dependencies

Upgrade to Flutter 3.19+ and modernize Android/iOS build configurations

The project has been upgraded to support Flutter 3.19+ (SDK \>=3.1.0), requiring a migration to the new Android Gradle plugin (AGP 8.1.0) and Kotlin 1.8.22. This includes updating \android/app/build.gradle\ to use the new plugin block syntax and namespace, and updating \android/settings.gradle\ to use the Flutter plugin loader. iOS and macOS minimum deployment targets have been raised to iOS 12.0 and macOS 10.14 respectively. Additionally, several new dependencies have been added, including \audioplayers\, \awesome\_notifications\, \drift\, and \flutter\_bloc\, while older packages like \is\ have been removed.

(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 56 → 61 (+5.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 93 (-6.7)
  • Architecture 92 → 89 (-3.4)
  • Maturity 35 → 48 (+12.3)
  • Readiness 57 → 55 (-1.8)
  • Security 81 → 88 (+6.8)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (19)

  • Change coupling: task_repository.dart ↔ tasks_bloc.dart (lib/features/task_management/domain/repositories/task_repository.dart)
  • Change coupling: task_repository.dart ↔ tasks_state.dart (lib/features/task_management/domain/repositories/task_repository.dart)
  • Change coupling: task_repository_impl.dart ↔ tasks_bloc.dart (lib/features/task_management/data/repositories/task_repository_impl.dart)
  • Change coupling: tasks_local_data_source.dart ↔ task_repository.dart (lib/features/task_management/data/data_sources/tasks_local_data_source.dart)
  • Change coupling: tasks_local_data_source.dart ↔ tasks_bloc.dart (lib/features/task_management/data/data_sources/tasks_local_data_source.dart)
  • Change coupling: tasks_local_data_source.dart ↔ tasks_event.dart (lib/features/task_management/data/data_sources/tasks_local_data_source.dart)
  • Change coupling: tasks_local_data_source.dart ↔ tasks_state.dart (lib/features/task_management/data/data_sources/tasks_local_data_source.dart)
  • Change coupling: timer_repository_impl.dart ↔ timer_bloc.dart (lib/features/task_management/data/repositories/timer_repository_impl.dart)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • 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
  • Test reliability not included
  • complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (49)

  • AddHabitView.build (cognitive 25) (lib/features/habit_tracking/presentation/pages/add_habit_page.dart)
  • AddHabitView.build (cyclomatic 19) (lib/features/habit_tracking/presentation/pages/add_habit_page.dart)
  • Change coupling: di.dart ↔ tasks_state.dart (lib/di.dart)
  • Change-coupling hub: task_repository.dart → tasks_bloc.dart, tasks_event.dart, tasks_state.dart (lib/features/task_management/domain/repositories/task_repository.dart)
  • Change-coupling hub: task_repository_impl.dart → tasks_bloc.dart, tasks_event.dart, tasks_state.dart (lib/features/task_management/data/repositories/task_repository_impl.dart)
  • Change-coupling hub: tasks_local_data_source.dart → task_repository.dart, tasks_bloc.dart, tasks_event.dart, tasks_state.dart (lib/features/task_management/data/data_sources/tasks_local_data_source.dart)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 3) (lib/features/task_management/data/repositories/task_repository_impl.dart)
  • Duplicated block (12 lines × 2) (lib/features/configuration/presentation/widgets/change_language_bottom_sheet.dart)
  • Duplicated block (12 lines × 2) (lib/features/task_management/presentation/pages/timer_page.dart)
  • Duplicated block (14 lines × 2) (lib/features/habit_tracking/presentation/pages/add_habit_page.dart)
  • Duplicated block (21 lines × 2) (lib/features/task_management/presentation/shared_widgets/home_task_item.dart)
  • Duplicated block (26 lines × 3) (lib/features/task_management/presentation/pages/task_widgets/filter_tasks_widget.dart)
  • Duplicated block (39–40 lines × 2) (lib/features/task_management/presentation/pages/add_task_page.dart)
  • Duplicated block (50 lines × 2) (lib/features/task_management/presentation/pages/add_task_page.dart)
  • Duplicated block (6 lines × 2) (lib/core/utils/utils.dart)
  • Duplicated block (7 lines × 2) (lib/features/task_management/presentation/pages/add_category_page.dart)
  • …and 29 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

time-mastery/pmodoro-application 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 fca9ffcfad7f2ac1a3d7afaaa67af77a49d9c729 — 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.