abibiano/course_resocoder_repo_viewer
45.9
Weak · 21 September 2026
2.4k
lines of production code
Dart
primary language
4
measurements over time
What this system is
This is a Flutter-based GitHub client application that enables users to browse, search, and manage repositories. It implements a full authentication flow using GitHub OAuth2 and provides features for viewing repository details, managing starred lists, and maintaining a local search history. The system is structured around a clean architecture with distinct domain, infrastructure, and presentation layers, utilizing Riverpod for state management and Sembast for local caching.
Features
Add NoResultsDisplay component for empty states
A new NoResultsDisplay widget has been added to the core presentation layer. This component renders a centered layout featuring an icon and a message, providing a consistent way to display empty states to users when no results are found.
lib/github/core/presentation · high confidence
Add StarredReposNotifier for managing starred repository lists
A new StarredReposNotifier class has been introduced to handle the logic for fetching and paginating starred repositories. This component extends PaginatedReposNotifier and integrates with the StarredReposRepository to provide methods for retrieving the first page of starred repositories and subsequent pages, effectively separating the data-fetching logic from the UI layer.
_lib/github/repos/starred\repos/application · high confidence
Add paginated repository list view with loading, error, and success states
The \lib/github/repos/core/pagination\ area introduces a new \PaginatedReposListView\ component that manages the display of repository items in a scrollable list. It handles three distinct states: a \LoadingRepoTile\ for initial or in-progress loads, a \FailureRepoTile\ that displays error messages and a retry action, and a \RepoTile\ for successful data. The list view integrates with the \PaginatedReposNotifier\ via Riverpod, automatically loading the next page of results when the user scrolls to the bottom, and displays a toast notification if the device is offline.
lib/github/repos/core/presentation · high confidence
Add repo detail page with starred status and optimistic updates
Users can now view the details of a specific repository, including its README rendered as HTML. The page displays a star icon that reflects the current starred status and allows users to toggle it. The implementation introduces a \RepoDetailState\ with a \hasStarredStatusChanged\ flag to track optimistic UI updates, and a \GithubRepoDetail\ domain model containing \fullName\, \html\, and \starred\ fields. The \RepoDetailPage\ uses a \RepoDetailNotifier\ to fetch repo details and handle starred status changes, while the \RepoDetailRepository\ coordinates between local caching and remote API calls for readme content and starred status.
lib/github/detail · high confidence
Add search functionality for GitHub repositories
Users can now search for repositories on GitHub. This change introduces a new SearchedReposPage that displays search results using a paginated list view. The implementation includes a new SearchedReposNotifier to manage the search state, a SearchedReposRepository to handle the data layer, and a SearchedReposRemoteService to fetch data from the GitHub API's /search/repositories endpoint.
_lib/github/repos/searched\repos · high confidence
Add search history feature
Users can now see and manage their search history. The search bar displays previous search terms, allows users to navigate to results for past queries, and lets users delete individual entries. The system automatically adds new searches to the history and keeps the most recent 10 entries.
lib/search · high confidence
Added GitHub API data transfer objects and pagination support
Introduced new data transfer objects for GitHub repository and user data, including \GithubHeaders\ for parsing response headers (ETag, Link/Pagination), \GithubRepoDTO\ for repository details (owner, name, description, stargazers count), and \UserDTO\ for user information (login, avatar URL). Also added \GithubHeadersCache\ for local storage of headers and \PaginationConfig\ to define the number of items per page, enabling paginated API responses to be parsed and cached locally.
lib/github/core/infrastructure · high confidence
Added StarredReposPage for displaying starred repositories
Users can now view their starred repositories through a new page that displays a paginated list of starred repos. The page includes a search bar for filtering repositories and a sign-out option. On load, it automatically fetches the first page of starred repositories using a Riverpod provider.
_lib/github/repos/starred\repos/presentation · high confidence
Added domain models for GitHub entities
Introduced new domain classes for GitHub data: \GithubFailure\ to represent API errors with an optional error code, \GithubRepo\ to model repository details including owner, name, description, and star count, and \User\ to represent user profiles with name and avatar URL. These immutable value types use the Freezed package for copy-with and pattern-matching support, establishing the core data structures for the GitHub feature.
lib/github/core/domain · high confidence
Added paginated repository listing support
Users can now browse repositories with pagination support, allowing them to load and view multiple pages of results. This change introduces a new \PaginatedReposNotifier\ to manage the state of paginated repository lists, along with the necessary infrastructure to fetch and convert remote data into domain models.
lib/github/repos/core/application · high confidence
Added sign-in and authorization UI for GitHub authentication
Users can now initiate a GitHub sign-in flow from a new sign-in page, which navigates to an authorization page that handles the GitHub OAuth redirect. The sign-in page displays a welcome screen with a GitHub icon and a 'Sign In' button, while the authorization page renders a web view to complete the OAuth process.
lib/auth/presentation · high confidence
Added splash page and application entry point
The application now includes a new splash screen that displays a GitHub icon and a loading indicator while the app initializes. The main entry point has been updated to initialize the provider scope for state management. This introduces a visual loading state before the main application widget is rendered.
lib · high confidence
Implemented secure credential storage and OAuth2 authentication flow
Added a new authentication infrastructure in lib/auth/infrastructure, introducing a secure credential storage mechanism using flutter\_secure\_storage to persist OAuth2 credentials. The GithubAuthenticator class now handles the full OAuth2 flow, including authorization, token refresh, and token revocation (sign-out). An OAuth2Interceptor for Dio automatically injects bearer tokens into requests and handles 401 errors by refreshing credentials or clearing invalid ones.
lib/auth/infrastructure · high confidence
Initial Android and Web platform configurations for the app
The Android and Web platforms have been initialized with their respective configuration files. On Android, this includes the main and debug/manifest files, the Kotlin activity class, resource styles for the splash screen, and Gradle wrapper settings. For the web, the entry point HTML and the PWA manifest have been added, enabling the app to run on mobile devices and in browsers.
android, web · high confidence
Initial app routing configuration
The application now defines its navigation structure using the \auto\_route\ package. This change introduces the \AppRouter\ and its generated counterpart \AppRouter.gr.dart\, which map specific URL paths to Flutter pages. The configured routes include a splash screen, sign-in, authorization, starred repositories, searched repositories, and repository detail views, establishing the primary navigation flow for the app.
lib/core/presentation/routes · high confidence
Initial project scaffolding and configuration
The repository was initialized with essential configuration files, including a Makefile for build and test automation, an analysis\_options.yaml file to enforce linting rules, and a build.yaml for code generation. The project also includes a .env.sample file for environment variables, a .gitignore for Dart/Flutter artifacts, and an IDE module file for IntelliJ/Android Studio. Documentation was updated in README.md to provide setup instructions and build commands.
(repo-wide) · high confidence
Introduce local caching for starred repositories
Added a new infrastructure layer for the starred repositories feature, including a local service using Sembast for offline storage, a remote service for fetching data from the GitHub API, and a repository class that implements a cache-aside pattern: it fetches fresh data from the network, caches the results locally, and serves cached data when offline or when the API returns a 304 Not Modified.
_lib/github/repos/starred\repos/infrastructure · high confidence
Introduce shared encoding and provider utilities
Added a new encoders.dart file that exposes a base64 string encoder, and a new providers.dart file that registers a SembastDatabase instance and a Dio HTTP client as shared providers. These additions provide reusable encoding logic and dependency injection points for core infrastructure.
lib/core/shared · medium confidence
Introduced AuthFailure domain model for authentication errors
Added a new \AuthFailure\ class in the \lib/auth/domain\ directory to represent authentication failure states. This model, generated via the \freezed\ package, defines two distinct failure types: \server\ (which carries an optional error message) and \storage\ (representing local storage issues). This provides a structured way to handle and distinguish between different categories of authentication errors within the application's domain layer.
lib/auth/domain · high confidence
Introduced Riverpod providers for GitHub repository services
Added a new providers file that registers Riverpod providers for GitHub repository detail and starred/filtered repositories. This introduces state notifiers for repository details and paginated lists, along with their associated remote and local services, enabling the app to manage and display repository data more effectively.
lib/github/core/shared · high confidence
Introduces a generic Fresh value object for domain state
A new generic \Fresh\<T\>\ class has been added to the core domain layer, providing a structured way to represent the freshness state of an entity. This value object wraps an \entity\ along with metadata such as \isFresh\, \maxPage\, and \isNextPageAvailable\, enabling consistent handling of data freshness across the application.
lib/core/domain · high confidence
Introduces a new state-based authentication flow using Riverpod
The application now manages authentication status through a dedicated \AuthNotifier\ that tracks user states (initial, unauthenticated, authenticated, or failure) using the Riverpod state management library. This change replaces the previous, likely ad-hoc or class-based state management with a structured, immutable state model that allows UI components to reactively update based on login, logout, and error conditions.
lib/auth/application · high confidence
Introduces shared authentication providers and OAuth2 interceptor
Adds a new file, lib/auth/shared/provider.dart, which defines the dependency injection (DI) providers for the authentication system. This includes the OAuth2 interceptor, the GitHub authenticator, the credential storage, and the auth notifier, wiring them together for use across the application.
lib/auth/shared · high confidence
New local storage and network error handling infrastructure
The app now supports offline functionality by introducing a local Sembast database for persistent storage, and improves error handling for network issues. Specifically, a new \RemoteResponse\ type (using the Freezed package) allows the app to distinguish between 'no connection', 'not modified', and 'new data' states, while a \DioError\ extension helps identify connection failures. Additionally, a \RestApiException\ class is added to encapsulate API errors with optional error codes.
lib/core/infrastructure · high confidence
iOS build configuration and workspace files added
The project now includes the necessary Xcode project file (project.pbxproj), workspace definitions, and scheme configurations for the iOS 'Runner' target. This establishes the build environment, linking the app with its CocoaPods dependencies and defining how the application is built, tested, and launched within Xcode.
ios/Runner.xcodeproj · high confidence
Behavioural changes
App initialization and toast notification system
The app now initializes core dependencies (environment variables, database, and HTTP client with GitHub headers and OAuth2 interceptors) before rendering, and routes users to either the starred repositories or sign-in page based on authentication status. Additionally, a new toast notification system has been added to display connection error messages to users.
lib/core/presentation · high confidence
Updated iOS Flutter build configuration files
The iOS build configuration files (AppFrameworkInfo.plist, Debug.xcconfig, and Release.xcconfig) have been updated. This includes the addition of the AppFrameworkInfo.plist with a minimum OS version of 12.0 and updated xcconfig files to reference the generated Flutter build settings.
ios/Flutter · medium confidence
iOS app configuration and assets added
The iOS build configuration, launch screens, and app icons have been added to the project. Users will now see the correct app icon on the home screen, a proper launch screen during app cold-start, and the app will display the name "ResoRepo Viewer" in the device settings and app store listings.
ios/Runner · 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 45 → 46 (+0.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 98 (-2.0)
- Architecture 100 → 83 (-17.1)
- Maturity 41 → 52 (+11.3)
- Readiness 15 → 15 (+0.0)
- Security 95 → 95 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (4)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- complexity unreadable for .dart, .kt, .swift — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (6)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no architecture or design documentation (README.md)
- Duplicated block (13–14 lines × 2) (lib/github/detail/infrastructure/repo_detail_remote_service.dart)
- Duplicated block (8 lines × 2) (lib/auth/infrastructure/github_authenticator.dart)
- MethodTooLong: _SearchBarState.build (lib/search/presentation/search_bar.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
abibiano/course_resocoder_repo_viewer 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 98de41a349d38d9039615344d7102ee09ab32a4d — 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.