adryanev/flutter-mobile-clean-architecture-template
69.7
Adequate · 21 September 2026
706
lines of production code
Dart
primary language
4
measurements over time
What this system is
This system is a Flutter-based mobile and web application scaffolded with a clean architecture, utilizing GoRouter for navigation and BLoC/Cubit for state management. It provides foundational utilities for form validation, dependency injection, and internationalization across English and Indonesian locales. The project explicitly supports Android, iOS, and web platforms, while having removed Windows desktop and default web entry points.
Features
Added shared domain entities and form validation inputs
New shared domain entities (UniqueId, StringSingleLine) and Formz-based input validators (EmailInput, PasswordInput, PasswordConfirmationInput) have been added to the shared library. These components provide standardized validation logic and state management for common form fields, enabling consistent user input handling across the application.
lib/shared · high confidence
Introduces core domain, presentation, and utility foundations
Adds the foundational architecture for the application, including domain entities like ValueObject and use cases, along with failure handling via a sealed Failure class and specific error types. The update also introduces a dependency injection setup with AppModule and StorageModule, utility classes for colors, dimensions, and constants, and extension methods for Flutter's BuildContext to display flash messages and snackbars.
lib/core · high confidence
Architecture
Restructures Counter feature into Clean Architecture layers
The Counter feature has been reorganized to follow a clean architecture pattern, moving presentation logic into dedicated directories (presentation/blocs, presentation/pages) and establishing empty placeholder files for data, domain, and repository layers. The CounterCubit now uses dependency injection via @injectable, and the CounterPage widget has been updated to use context extensions and a failure message handler mixin, reflecting a shift in how the feature is structured and accessed.
lib/features/counter · high confidence
Behavioural changes
Add environment-based dependency injection initialization
The application now initializes dependency injection via the \get\_it\ and \injectable\ packages before running the app. The \bootstrap\ function in \lib/bootstrap.dart\ has been updated to accept an \environment\ parameter, which is passed to \configureDependencies\ from the new \lib/injector.dart\. Each entry point (\main\_development.dart\, \main\_production.dart\, \main\_staging.dart\) now passes its specific environment constant (e.g., \Environment.development\) to the bootstrap process, enabling environment-specific dependency configuration.
lib · high confidence
Added font assets and license documentation
The application now includes the Poppins font files and their associated SIL Open Font License (OFL) text in the assets directory, alongside placeholder files for icons and images.
assets · medium confidence
Migrate app shell to GoRouter and add FlashCubit integration
The app shell has been refactored to use GoRouter for navigation, replacing the previous setup where the home screen was defined directly on the MaterialApp. The main App widget now wraps the UI in MultiBlocProvider and MultiBlocListener to handle FlashCubit state changes, which trigger snackbar notifications. Additionally, the theme now uses Material 3, applies the Poppins font family, and enforces no text scaling.
lib/app · medium confidence
Removal of default web application entry point and manifest
The default web entry point (index.html) and the associated PWA manifest (manifest.json) have been removed from the web directory. This change eliminates the standard web build output files, indicating a shift away from the default web template configuration.
web · medium confidence
Removed Windows desktop platform support
The Windows desktop platform has been removed from the project. All Windows-specific build files (CMakeLists.txt, .rc, .cpp, .h, and manifest files) and the associated .gitignore have been deleted. As a result, the application can no longer be built or run on Windows desktop environments.
windows · high confidence
Updated Android Gradle wrapper to version 8.14
The Android build system has been updated to use Gradle 8.14 (previously 7.4). This change affects how the Android module is built and may require updates to build scripts or plugins to ensure compatibility with the newer Gradle version.
android · high confidence
Updated Flutter project template with new tooling and configuration files
The project template has been updated to include a Makefile with build, test, and analysis commands for Android, iOS, and web flavors, alongside configuration files for the Flutter Version Manager (.fvmrc), build runner (build.yaml), native splash screen (flutter\_native\_splash.yaml), and localization (l10n.yaml). The analysis options have been upgraded to use very\_good\_analysis 5.1.0, and the .gitignore has been expanded to exclude generated files for Android, iOS, Windows, and Linux platforms.
(repo-wide) · high confidence
Updated localization files and generated code for English and Indonesian
The application's internationalization (i18n) setup has been updated to support English and Indonesian. New translation keys for email validation, password validation, and password confirmation have been added to the English locale, while the Indonesian locale provides corresponding translations. The generated Dart code in lib/l10n/generated/ has been regenerated to include these new strings, and the main l10n module now exports the updated localizations. The Spanish localization file has been removed.
lib/l10n · medium confidence
iOS app lifecycle and scene management updated for modern iOS
The iOS project has been updated to support modern iOS scene management. A new SceneDelegate has been added to handle scene lifecycle events, and the Info.plist has been updated with the necessary UIApplicationSceneManifest configuration to register the scene delegate. Additionally, the app delegate now implements the FlutterImplicitEngineDelegate protocol to manage plugin registration for the implicit engine, and the Xcode project has been upgraded to support Swift Package Manager for Flutter plugins.
ios · high confidence
Test coverage
Added comprehensive test coverage for core domain entities, failures, and shared formz components
Added new test files for ValueObject, value validators, and various failure classes (UnexpectedValueError, Failure, ValueFailure) to verify their behavior and properties. Added tests for use cases (UseCase, StreamUseCase) and context extensions (displayFlash, dartz extensions). Added tests for shared domain entities (StringSingleLine, UniqueId) and Formz input components (EmailInput, PasswordInput, PasswordConfirmationInput). Updated existing tests for CounterCubit and CounterPage to reflect new import paths and structure. Added a fixture reader helper and updated the app test to use a router-based pump method.
test · high confidence
Dependencies
Update Flutter project configuration and dependencies
The project's build configuration has been modernized to use the new Android Gradle plugin (AGP) 8.11.1 and Kotlin 2.2.20, replacing the legacy \apply plugin\ syntax with the declarative \plugins\ block. The Android build is updated to use Java 17 and the \dev.flutter.flutter-gradle-plugin\. Additionally, the \pubspec.yaml\ has been updated to support Dart SDK 3.11.0+, and numerous dependencies (including \go\_router\, \bloc\, \mocktail\, and \freezed\) have been upgraded to their latest compatible versions.
(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 69 → 70 (+0.3)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 63 → 63 (-0.5)
- Readiness 65 → 62 (-2.9)
- Security 67 → 77 (+10.2)
- Domain Modelling 100 → 100 (+0.0)
Resolved (12)
- 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)
- No exposed public API
- PR-triggered workflow without a permissions block
- Test reliability not included
- The Launch Screen Assets README is thin and only describes how to replace images in the xcassets directory. (ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md)
- complexity unreadable for .dart, .kt, .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
New (11)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no architecture or design documentation (README.md)
- Documentation: no usage examples (README.md)
- 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)
- High: security finding (details withheld)
- Workflow token grant is wider than its jobs use
- Workflow token permissions not restricted
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
adryanev/flutter-mobile-clean-architecture-template 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 6818951dcf8149a43748d5c35d89d3f2c6933edd — 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.