Skip to content
CAI
Software that uses CAICheck a score

duytq94/flutter-chat-demo

51.2

Adequate · 19 September 2026

1.9k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Flutter-based chat demonstration application that facilitates user authentication via Google Sign-In and enables real-time text and image messaging through Firebase services. It provides a complete user interface for browsing users, managing profiles, and handling conversations, supported by local state management and persistent storage utilities. The codebase maintains modern cross-platform configurations for Android and iOS, ensuring compatibility with current build tools and native device features like push notifications and camera access.

Features

Added debouncing and keyboard utility helpers

New utility classes have been introduced to the application's helper library: a Debouncer class that delays the execution of actions by a specified number of milliseconds, and a Utilities class providing methods to detect if the on-screen keyboard is visible and to programmatically dismiss it.

lib/utils · high confidence

Initial release of Flutter Chat Demo UI pages and constants

This change introduces the core user interface structure for the chat application, adding the main navigation pages (Splash, Login, Home, Chat, Settings, and Full Photo) and centralizing app configuration in new constant files for strings, colors, and Firestore schema. Users will now see the complete set of screens required to sign in, browse users, send text and image messages, and manage their profile, replacing any previous ad-hoc or missing page implementations.

lib/pages · high confidence

Behavioural changes

App initialization and architecture overhaul

The application now initializes Firebase services before launching, ensuring that backend connectivity is established prior to UI rendering. The app structure has been refactored to use the Provider package for state management, replacing the previous single-page design with a multi-provider setup that manages authentication, settings, home, and chat states. Additionally, the UI theme has been updated to use Material 3 with a configurable color seed, and the entry point has changed from a static home page to a SplashPage.

lib · high confidence

Migrate Android activity to Flutter 2 embedding

The Android MainActivity has been updated to use the Flutter 2 embedding (io.flutter.embedding.android.FlutterActivity) and the legacy boilerplate for plugin registration and activity lifecycle management has been removed, aligning the native Android code with the newer Flutter framework version.

android/app/src/main/java · high confidence

Updated iOS build configuration and dependency integration

The iOS build setup has been updated to integrate CocoaPods dependencies, with the workspace now referencing the Pods project and debug/release configurations including the generated Pods xcconfig files. Additionally, the minimum supported iOS version requirement has been removed from the AppFrameworkInfo.plist, and a new build ID file was added to track the last build state.

ios/Flutter · high confidence

iOS app configuration updated for Firebase, push notifications, and UIScene

The iOS app configuration has been updated to support Firebase integration and modern iOS lifecycle management. The bundle identifier is now set to com.duytq.flutterchatdemo, and GoogleService-Info.plist has been added to enable Firebase services. Push notifications are enabled via the aps-environment entitlement and UIBackgroundModes, while camera and photo library usage descriptions have been added to Info.plist. The app now uses UIScene for window management, configures URL schemes for Google sign-in, and disables the FirebaseAppDelegateProxyEnabled to allow manual notification handling.

ios/Runner · high confidence

iOS project migrated to CocoaPods and updated for modern Xcode

The iOS build configuration has been updated to use CocoaPods for dependency management, replacing the previous embedded Flutter and App frameworks with the Pods\_Runner framework. This migration includes adding build phases to copy pods resources and embed pods frameworks, integrating Firebase configuration files (GoogleService-Info.plist and Runner.entitlements), and enabling Push notification capabilities. The project file and scheme have also been upgraded to Xcode 15.1 standards, with debugger settings adjusted to use the Flutter LLDB init file and GPU validation mode enabled.

ios/Runner.xcodeproj · high confidence

Test coverage

Updated widget test to support SharedPreferences injection

The widget test in test/widget\_test.dart has been updated to initialize and inject a SharedPreferences instance into the MyApp widget. This change allows the test to verify application behavior that depends on shared preferences storage, ensuring the app initializes correctly with this dependency.

test · high confidence

Dependencies

Gradle build tool upgraded to version 8.7

The Android build system has been upgraded from Gradle 4.4 to Gradle 8.7. This change updates the wrapper configuration to use the newer distribution, which may affect build performance and compatibility with newer Android plugin versions. The gradlew script has also been ensured to have executable permissions.

android/gradle · high confidence

Major dependency and build system upgrade

The project has been upgraded to support Flutter 3.32.1 and Dart 3.3.0, requiring a significant update to its dependency ecosystem. Key Firebase libraries (Auth, Firestore, Storage, Messaging) and utility packages (Provider, Image Picker, Toast) have been updated to their latest major versions. On the Android side, the build system has migrated to the new Gradle plugin management DSL, upgraded to Android Gradle Plugin 8.6.0 and Kotlin 2.1.0, and increased the compile SDK to 36. The iOS platform target has been raised to iOS 15.0, and the project now uses AndroidX with Jetifier enabled.

(dependencies) · high confidence

Housekeeping

Initial project setup with license, gitignore, and IDE configuration

The repository has been initialized with an MIT license, a comprehensive .gitignore file tailored for Flutter and Dart development (excluding build artifacts, IDE settings, and plugin caches), and an updated .iml file that explicitly excludes build and cache directories for various Firebase and utility plugins (such as cloud\_firestore, firebase\_auth, image\_picker, and sqflite) to keep the project workspace clean. The README has also been updated to provide a description of the chat demo app, including features like Google login and push notifications, along with instructions on how to run the project.

(repo-wide) · 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 51.

Lenses

  • Code Health 93
  • Architecture 99
  • Maturity 73
  • Readiness 12
  • Security 98
  • Domain Modelling 100

Changes since last survey

  • 100 commits — 79 feature/other, 21 fixes

By area

  • (root) — 39 commits
  • lib/pages — 13 commits
  • .idea/libraries — 11 commits
  • .idea/workspace.xml — 8 commits
  • android/app — 6 commits
  • ios/Runner — 5 commits
  • lib/chat.dart — 5 commits
  • (repo) — 4 commits
  • images/mimi1.gif — 2 commits
  • ios/Podfile — 2 commits
  • lib/login.dart — 2 commits
  • ios/Flutter — 1 commit
  • lib/main.dart — 1 commit
  • lib/settings.dart — 1 commit

Notable commits

  • fix: * Upgrade dependencies * Fix loading forever when login without network * Add safe area home & chat page * Fix syntax warning on Flutter 3
  • fix: Fix _limit increase infinitely
  • fix: Fix inconsitency in group chat id in different platforms Details here https://github.com/duytq94/flutter-chat-demo/issues/59
  • fix: Fix listMessage is appending snapshots infinitely
  • fix: ImagePicker fix in settings and lazy load in chat
  • fix: Move firebase initialize to main.dart to fix "No Firebase App '[DEFAULT]' has been created flutter..."
  • fix: fix bug auto update when sign out
  • fix: fix bugs new user
  • fix: fix build iOS when migrate android x
  • fix: fix config iOS
  • fix: fix some gif not loop infinite
  • fix: fix upload image
  • fix: fix upload image file
  • fix: fix white screen on iOS
  • fix: fix: missing dispose, deprecated, change page to staless if able
  • fix: temp update firebase_messaging to fix issue with flutter_local_notifications
  • fix: update dependecies & migrate to UIScene & fix gradle
  • fix: update some dependencies & fix to compatiable with 3.19.0
  • fix: update some dependencies & fix to compatiable with Flutter 3.32.1
  • fix: update versions plugin to fix build release
  • …and 80 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

duytq94/flutter-chat-demo 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 574898423b0f813b0f326f8ab3e1387d75928d2b — 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.