Skip to content
CAI
Software that uses CAICheck a score

iamnijat/habitonic

53.2

Weak · 21 September 2026

5.6k

lines of production code

Dart

with C++

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a cross-platform mobile application, likely built with Flutter, focused on habit tracking and user preferences. The system manages user state through a centralized dependency injection pattern and supports multiple languages, including a recent addition of Turkish. It features interactive UI elements like animated success modals and scrollable bottom sheets, while maintaining compatibility with modern Android and iOS build environments.

Features

Added Turkish language support

The app now supports Turkish, with translations provided for all UI strings. Users can switch to Turkish from the language selection menu, and the interface will display in Turkish. This includes translations for the intro page, home screen, habit details, and error pages.

lib/l10n · high confidence

Behavioural changes

Animated success confirmation and refined UI styling

The app now features animated visual feedback when a habit is successfully completed, with new bubble and checkmark animations in the success modal. Additionally, the application's typography has been adjusted, with headline text reduced from 20sp to 18sp and body text from 13sp to 12sp, while the success modal's overview section has been slightly repositioned.

lib/presentation · high confidence

Refactored app initialization and localization setup

The application's startup process has been refactored to use a centralized DependencyInjector for managing global BLoCs, replacing the previous direct BlocProvider registration in app.dart. Additionally, the time-ago localization logic has been consolidated into a single class, the French-specific time formatting file has been removed, and the Turkish language option has been added to the supported languages list.

lib/config · high confidence

Standardize modal bottom sheet implementation in core helpers

The modal bottom sheet helper in lib/core was updated to use the standard Flutter showModalBottomSheet instead of the deprecated showMaterialModalBottomSheet from the modal\_bottom\_sheet package. This change also enables scrollable bottom sheets by setting isScrollControlled to true, allowing the sheets to expand to their full height when needed.

lib/core · high confidence

iOS minimum deployment target raised to iOS 11

The iOS minimum deployment target has been updated from 9.0 to 11.0, requiring devices running iOS 11 or later. This change is accompanied by the integration of CocoaPods, which adds the Pods group and framework references to the Xcode project, and includes build script phases to check and embed Pods frameworks. Additionally, the iOS Info.plist now includes a key to disable minimum frame duration on iPhone, and Dart use cases have been refactored to remove unused repository imports.

_ios, lib/domain/use\_cases/preferences\_use\cases · high confidence

Dependencies

Updated Flutter dependencies and Android build configuration

The project has updated its Dart dependencies in pubspec.yaml and pubspec.lock, including upgrades to flutter\_bloc, rxdart, flutter\_svg, and other packages. On the Android side, the build configuration was migrated to the new Gradle plugin management system, the compileSdkVersion was updated to 34, and the targetSdkVersion was updated to 35. Additionally, the iOS build environment was initialized with a new Podfile to manage CocoaPods dependencies.

(dependencies) · high confidence

Updated Gradle wrapper to version 8.10.2

The Android project's Gradle wrapper has been upgraded from version 7.2 to 8.10.2. This update ensures the build system uses a newer version of the Gradle build tool, which may bring performance improvements, new features, and compatibility with newer Android development tools.

android · medium 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 51 → 53 (+2.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 99 (-0.8)
  • Architecture 100 → 91 (-8.7)
  • Maturity 47 → 52 (+5.5)
  • Readiness 32 → 32 (+0.0)
  • Security 71 → 83 (+11.9)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (10)

  • 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)
  • Low vulnerability: [GHSA redacted] (pubspec.lock)
  • No exposed public API
  • complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient

New (21)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (11 lines × 2) (lib/presentation/modal_bottom_sheets/widgets/new_habit_modal_bottom_sheet/form/fields/emoji_field/new_habit_modal_bottom_sheet_select_emoji_button.dart)
  • Duplicated block (12 lines × 2) (lib/presentation/pages/habit_details_page.dart)
  • Duplicated block (15 lines × 2) (lib/presentation/widgets/home/home_floating_button.dart)
  • Duplicated block (17 lines × 3) (lib/presentation/modal_bottom_sheets/widgets/emojis_selection_modal_bottom_sheet/items/emojis_selection_indicator.dart)
  • Duplicated block (27 lines × 2) (lib/presentation/modal_bottom_sheets/widgets/emojis_selection_modal_bottom_sheet/items/emojis_selection_indicator.dart)
  • Duplicated block (7 lines × 2) (lib/data/data_sources/local/emojis_local_data_source/emojis_local_data_source_impl.dart)
  • Duplicated block (9 lines × 2) (lib/data/repositories/emojis_repository_impl.dart)
  • Duplicated block (9 lines × 2) (lib/presentation/widgets/habit_details/bar_chart/habit_details_bar_chart_box.dart)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Low cohesion: CustomTimeAgoLocalizationMessages (LCOM4 6) (lib/config/utilities/time_ago/custom_time_ago_localization_messages.dart)
  • Low cohesion: Error (LCOM4 4) (lib/core/either.dart)
  • Low cohesion: Success (LCOM4 4) (lib/core/either.dart)
  • Low vulnerability: [GHSA redacted] (pubspec.lock)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No ADRs found
  • …and 1 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

iamnijat/habitonic 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 a5029f2f7b2fba3ad6c8fe1feb18db04c21449ec — 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.