khoren93/FlutterHub
63.5
Adequate · 21 September 2026
5.9k
lines of production code
Dart
with C++
4
measurements over time
What this system is
This system is a cross-platform Flutter application named 'FlutterHub' that provides a comprehensive interface for browsing and interacting with GitHub data. It enables users to explore trending repositories and users, search for code and developers, and view detailed information about specific repositories and user profiles. The app features a clean architecture with distinct presentation, domain, and data layers, supporting multi-language localization, theme customization, and secure local storage across Android, iOS, macOS, and Windows platforms.
Features
Added generated internationalization (i18n) support for English, Armenian, and Russian
The project now includes generated localization files for English (en\_US), Armenian (hy\_AM), and Russian (ru\_RU) within the lib/generated directory. This adds the necessary infrastructure for multi-language support, allowing the application to display translated strings for UI elements such as login screens, repository details, and user profiles in these three languages.
lib/generated · high confidence
Added macOS application support
Added the macOS platform files for the Flutter application, including the Xcode project configuration, Swift source files (AppController, MainFlutterWindow), and the generated plugin registrant. This enables the app to be built and run on macOS, with the app bundle named 'FlutterHub' and bundle identifier 'com.markosyan.flutterhub'.
macos · high confidence
Added repositories feature with UI, state management, and data layer
Users can now view their repositories, starred repositories, watched repositories, and forks through a new Repositories page. This change introduces the complete feature stack: a presentation layer with a Flutter page and BLoC/Cubit for state management, domain layer with use cases and repository interfaces, and a data layer implementation that fetches repository data from the API. The UI supports pull-to-refresh and infinite scrolling for repository lists.
lib/features/repositories · high confidence
Added repository and user detail views with full-stack implementation
Users can now view detailed information about specific repositories and users. This change introduces the complete feature stack for both entities, including domain models, repository interfaces and implementations, use cases, BLoC state management (cubits and states), and the corresponding Flutter UI pages (RepositoryPage and UserPage) that display the fetched data.
lib/features/repository, lib/features/user · high confidence
Adds web splash screen and authentication completion page
The web build now includes a splash screen that displays a loading image (supporting light/dark mode) and a dedicated HTML page for handling authentication callbacks. The main index.html was updated to include the splash screen assets and a script to remove it once the app is ready, while a new auth.html page manages the post-authentication window closure.
web · high confidence
Introduced new utility modules for routing, dependency injection, and state management
Added new utility files to the application's core: a centralized router configuration (app\_router.dart) mapping deep links to specific feature pages; a dependency injection setup (di.dart) using GetIt to wire up Cubits, use cases, and repositories; and a BLoC observer (bloc\_observer.dart) for debugging state transitions. Additionally, new helpers for locale parsing, date formatting, secure token storage, and shared preferences were introduced to support the app's navigation and state management architecture.
lib/utils · high confidence
Introduced search and menu feature modules
Added new feature modules for search and menu. The search module includes a \SearchCubit\ with states for fetching repositories and users, along with corresponding use cases and repository implementations. The menu module introduces a \MenuCubit\ and a \MenuDrawerPage\ that displays user information, navigation options, and a rate limit widget. Both modules follow a clean architecture with separate domain, data, and presentation layers.
lib/features/search · high confidence
Introduces structured error handling and API service layer
The application now features a formalized error handling system with \ServerFailure\ and \ServerError\ models that parse API error responses, providing users with specific failure messages and documentation URLs. Additionally, the core data layer has been restructured to include generated Chopper services for authentication, repository search, trending data, and user information, enabling a more robust and typed approach to consuming the GitHub and third-party APIs.
lib/features/core, lib/features/login · high confidence
New Languages feature with search and selection
A new Languages page has been added, allowing users to view a list of repository languages, search for specific languages, and select one. The implementation includes a new domain use case, a BLoC/Cubit for state management, and UI components (page, header, tile) that support fetching, filtering, and selecting languages.
lib/features/languages · high confidence
New Trending feature with repository and user listings
The app now includes a new Trending feature that allows users to browse the most popular repositories and users. The implementation introduces a complete feature layer: domain models (TrendingRepository, TrendingUser), repository interfaces and implementations, use cases for fetching data, and a presentation layer with a TrendingCubit managing state for fetching, empty, success, and error conditions. The UI consists of a TrendingPage with tabs to switch between repositories and users, and time-period filters (daily, weekly, monthly) to refine the trending results.
lib/features/trending · high confidence
New app configuration and state management layer
Added a new app configuration and state management layer in lib/configs, introducing an AppStore to manage user authentication (login/logout, token, and user details), theme preferences (light/dark mode, color scheme index), and app settings (notifications, language). This includes the AppStore implementation, generated MobX code, theme definitions using FlexColorScheme and Google Fonts, and shared constants for API URLs and UI spacing.
lib/configs · high confidence
New settings page with theme and language controls
A new Settings page has been added, allowing users to change the app's color scheme, toggle between light/dark/system theme modes, and switch the display language. This introduces new UI components for theme selection, theme mode switching, and language selection within the settings feature.
lib/features/settings · high confidence
Project scaffolding and documentation updates
The repository now includes a Code of Conduct, an MIT license, and an app logo. The README has been expanded to describe the app's features, technologies, and setup instructions. Build configuration for code generation (json\_serializable, freezed) is added, and the .gitignore is updated to exclude generated files. Additionally, the Flutter metadata file is updated to support macOS migration, and analysis options are adjusted to exclude generated files from linting.
(repo-wide) · high confidence
Behavioural changes
Added Windows support for secure storage and URL launching plugins
The Windows build configuration and plugin registry have been updated to include the flutter\_secure\_storage\_windows and url\_launcher\_windows plugins. This enables the application to perform secure local storage operations and launch external URLs on Windows, matching capabilities previously available on other platforms.
windows/flutter · high confidence
Added localization support for Armenian, Russian, and English
The application now supports Armenian (hy\_AM), Russian (ru\_RU), and English (en\_US) for UI text. This includes translations for navigation titles (e.g., 'Trending', 'Search', 'Settings'), login screens, repository and user profile sections, and pull-to-refresh components. The \localizations.dart\ file registers these languages and provides specific string resources for the \pull\_to\_refresh\ and \timeago\ packages in all three languages.
lib/l10n · high confidence
Migrated app entry point and root widget to support DI, localization, and theming
The application's entry point (lib/main.dart) was refactored to initialize shared preferences, dependency injection, and logging before running the app. The root widget was moved to lib/app.dart, which now configures the Flutter MaterialApp with BLoC providers for login, trending, search, and languages features, applies light/dark themes based on user preference, and sets up localizations for multiple languages. The previous default Flutter counter demo was removed.
lib · high confidence
Updated Android app icon, splash screen, and build configuration
The Android app now displays a custom splash screen with background and splash images for both light and dark modes, and uses adaptive icons with a blue (\#01579B) background. The AndroidManifest.xml was updated to include visibility configurations for API level 30+, add a callback activity for flutter\_web\_auth, and change the app label to 'FlutterHub'. Additionally, the Gradle wrapper was upgraded from version 6.7 to 7.3.3.
android · high confidence
Updated iOS development team and added CocoaPods integration
The iOS project configuration has been updated to use a new development team (RE853S4FBU) and set the minimum iOS deployment target to 11.0. Additionally, the project now includes full CocoaPods support, with the Pods project and framework build phases added to the Xcode project, enabling the use of third-party libraries via CocoaPods.
ios/Runner.xcodeproj · medium confidence
iOS app icon, launch screen, and configuration updates
The iOS app icon has been updated with a new set of image assets and corresponding JSON metadata. The launch screen has been modified to include a background image layer alongside the existing launch image, and the associated storyboard constraints have been adjusted to accommodate the new visual layout. Additionally, the Info.plist has been updated to include URL scheme registration for deep linking and to disable minimum frame duration on iPhone, while also correcting the app display name capitalization.
ios/Runner · medium confidence
Test coverage
Added empty test file for TrendingCubit; Added empty test files for REST API services; Simplified test suite in test/widget\_test.dart.
Dependencies
Updated Flutter and Dart SDK dependencies
The project's dependencies have been updated to support newer versions of the Dart SDK (up to 3.4.3) and Flutter 3.0.0. This includes upgrading the \flex\_color\_scheme\ library from 5.0.1 to 5.1.0, and updating various transitive dependencies in \pubspec.lock\ such as \bloc\, \cached\_network\_image\, and \chopper\. Additionally, the Android build configuration was updated to set the minimum SDK version to 21, and the Kotlin version was upgraded to 1.6.21.
(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 62 → 63 (+1.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-0.9)
- Architecture 100 → 91 (-9.0)
- Maturity 40 → 54 (+13.9)
- Readiness 70 → 50 (-19.3)
- Security 79 → 92 (+13.3)
- 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: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- The Launch Screen Assets README is thin and only explains how to replace images in the xcassets directory, with no guidance on asset naming conventions or supported formats. (ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md)
- complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (26)
- Change coupling: repository_page.dart ↔ trending_page.dart (lib/features/repository/presentation/pages/repository_page.dart)
- Change coupling: search_delegate_page.dart ↔ main.dart (lib/features/search/presentation/pages/search_delegate_page.dart)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (11 lines × 2) (lib/features/repositories/presentation/pages/repositories_page.dart)
- Duplicated block (12 lines × 2) (lib/features/repositories/presentation/pages/repositories_page.dart)
- Duplicated block (14 lines × 2) (lib/features/repository/presentation/pages/repository_page.dart)
- Duplicated block (18 lines × 2) (lib/features/repositories/presentation/pages/repositories_page.dart)
- Duplicated block (22 lines × 2) (lib/features/repository/presentation/pages/repository_page.dart)
- Duplicated block (23–24 lines × 2) (lib/features/search/presentation/widgets/repository_tile.dart)
- Duplicated block (30 lines × 2) (lib/features/repository/presentation/pages/repository_page.dart)
- Duplicated block (6 lines × 2) (lib/features/repositories/presentation/pages/repositories_page.dart)
- Duplicated block (7 lines × 3) (lib/features/login/presentation/widgets/basic_login_widget.dart)
- Duplicated block (9 lines × 4) (lib/features/repositories/domain/usecases/repositories_usecases.dart)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Leaked secret: signing-key (lib/configs/constants.dart)
- …and 6 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
khoren93/FlutterHub 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 ac3ce29e4075dffe09a74bd8fb1abad4692aaaba — 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.