Skip to content
CAI
Software that uses CAICheck a score

radensaleh/Quran-App

55.8

Adequate · 21 September 2026

3.9k

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 system is a Quran reading application built on a clean architecture, featuring a domain layer for managing surahs, verses, and bookmarks. It provides a complete user interface for browsing, reading, and saving content, supported by a modular codebase with shared utilities, dependency injection, and centralized design tokens. The application also includes infrastructure for state management, networking, and local storage.

Features

Add Quran domain layer with data sources, repositories, and use cases

The domain layer for the Quran feature has been implemented, introducing the full data and domain architecture. This includes local and remote data sources for fetching surahs, juz, and verse details, as well as local storage for last-read surahs and bookmarked verses. The repository layer aggregates these data sources to provide a unified interface for the domain logic. Additionally, use cases have been added to encapsulate specific business rules, such as saving or removing bookmarks and tracking the last read position.

domains/quran · high confidence

Add bookmark, surah detail, and home screen features

This change introduces the core UI and logic for the Quran app's main features. The home screen now displays a list of surahs and the last read surah. Users can view detailed information about each surah, including verses and audio playback. Additionally, users can bookmark specific verses, with the ability to view and manage their saved verses in a dedicated bookmark screen.

(repo-wide) · high confidence

Added core networking and dependency injection setup

The shared\_libraries/core module now includes a new core library entry point, a dependency injection registration for the HTTP client, and the network stack. Specifically, a dependency injection setup registers a lazy singleton for Dio and DioHandler, with the latter configured with a base URL of 'https://jsonplaceholder.typicode.com'. The network layer introduces a DioHandler that sets connection/receive timeouts (50s/30s) and default JSON headers, alongside an ApiInterceptors class that logs request/response details for debugging.

_shared\libraries/core · high confidence

Introduce shared libraries for common utilities and dependency re-exports

The codebase now includes a new shared\_libraries/common module that provides reusable utilities, including a ViewData state management class, a UseCase base class, error handling, navigation helpers, route observers, and a preference settings provider. Additionally, a shared\_libraries/dependencies module has been added to centralize re-exports of third-party packages such as flutter\_bloc, dartz, dio, equatable, get\_it, just\_audio, provider, shared\_preferences, show\_up\_animation, and sqflite, allowing other modules to import these dependencies through a single, consistent interface.

_shared\_libraries/common, shared\libraries/dependencies · high confidence

Introduces centralized design tokens and a reusable flash message widget

The resources module now provides a unified visual language for the app. It defines a purple-based color palette and a Poppins text-style system, which are applied to light and dark theme configurations. Additionally, a custom flash notification widget is added, allowing the app to display status-based toast messages (success, failed, or info) with consistent styling.

resources/resources · high confidence

Behavioural changes

Replace Flutter demo app with Quran app architecture and register native plugins

The application entry point in lib/main.dart has been replaced with a full app structure featuring named routes for splash, onboarding, home, detail surah, and bookmark screens, each wired with specific BLoC/Cubit providers and use cases. The main app now uses MultiProvider and Consumer for state management, and registers navigator observers. Additionally, macOS native plugins (audio\_session, just\_audio, path\_provider\_macos, shared\_preferences\_macos, sqflite) are registered in GeneratedPluginRegistrant.swift.

lib, macos · high confidence

Test coverage

Added initial test structure and linting configuration for the Quran domain; Added initial test suite and analysis options for the resources module; Added placeholder unit tests for shared libraries.

Dependencies

Initial dependency manifest and lockfile generation

Added \pubspec.yaml\ and \pubspec.lock\ files for the \dependencies\, \common\, \core\, \resources\, \quran\, \home\, \detail\_surah\, \bookmark\, and \splash\ modules, establishing the project's package structure and resolving transitive dependencies such as \dio\, \flutter\_bloc\, and \sqflite\.

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

Lenses

  • Code Health 100 → 95 (-4.6)
  • Architecture 100 → 100 (+0.0)
  • Maturity 63 → 67 (+3.8)
  • Readiness 24 → 24 (+0.0)
  • Security 98 → 98 (+0.5)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (10)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (domains/quran/pubspec.lock)
  • No exposed public API
  • Test reliability not included
  • The modularization outline lists domains, features, resources, shared_libraries modules but no architecture or design docs are present in the path. (README.md)
  • complexity unreadable for .dart, .kt, .swift — churn × complexity hotspots could not be measured
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient
  • single-maintainer — knowledge-concentration (bus factor) risk

New (16)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (15 lines × 2) (features/bookmark/lib/presentation/ui/bookmark_screen.dart)
  • Duplicated block (15–18 lines × 2) (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • Duplicated block (25 lines × 2) (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • Duplicated block (26 lines × 2) (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • Duplicated block (6 lines × 2) (domains/quran/lib/data/models/detail_surah_dto.dart)
  • Duplicated block (6 lines × 2) (domains/quran/lib/data/models/detail_surah_dto.dart)
  • Duplicated block (69–70 lines × 2) (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • Duplicated block (9 lines × 2) (features/detail_surah/lib/presentation/cubits/bookmark_verses/bookmark_verses_cubit.dart)
  • High CVE: [GHSA redacted] (domains/quran/pubspec.lock)
  • MethodTooLong: _HomeScreenState.build (features/home/lib/presentation/ui/home_screen.dart)
  • MethodTooLong: _VersesWidgetState.build (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • MethodTooLong: _VersesWidgetState.build (features/detail_surah/lib/presentation/ui/widget/verses_widget.dart)
  • Near-duplicate member pair (110 shared lines) (features/bookmark/lib/presentation/ui/widget/verses_widget.dart)
  • 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

radensaleh/Quran-App 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 787ed528b7fe5b3de9cd70b80d3fd36ed2cfc098 — 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.