Skip to content
CAI
Software that uses CAICheck a score

shalenMathew/Quotes-app

47.0

Weak · 22 September 2026

11.4k

lines of production code

Kotlin

primary language

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Android application designed for displaying, managing, and sharing inspirational quotes. It provides users with the ability to browse quotes from remote sources, organize them into custom collections, and create personal entries. The app supports extensive customization through various visual themes, interactive home screen widgets, and ambient audio features, while also offering data persistence via local storage and backup capabilities.

How it got here

2024 — Architecture simplification and dependency overhaul

14 changes.

The project underwent a significant structural simplification by removing the legacy local data persistence, repository layer, and Hilt dependency injection setup. This cleanup was accompanied by a major build configuration overhaul, including upgrades to Kotlin, the Android Gradle Plugin, and various dependencies, while shifting the application ID and removing obsolete UI screens and boilerplate tests.

2025 — Custom quotes and modular architecture

32 changes.

The project introduced a comprehensive custom quote system, enabling users to create, organize, and manage personal collections alongside standard quotes. This feature expansion was supported by a significant architectural overhaul, including a package rename, modular dependency injection, and a robust domain-layer repository structure. Concurrently, the app enhanced its presentation layer with new sharing themes, interactive widgets, and background audio features.

2026 — Library management and settings expansion

10 changes.

This period focused on introducing a comprehensive Library feature for organizing quotes into custom collections, alongside significant enhancements to the Settings menu. The updates included new screens for backup and restore, notification scheduling, widget source selection, and user support, all supported by extensive unit testing across the domain and presentation layers.

Features

Add Custom Quote functionality

Users can now create, edit, and delete their own custom quotes. This change introduces the AddCustomQuoteScreen for inputting quote text and author, a CustomQuoteItem component for displaying individual quotes with share, edit, and delete actions, and a DeleteConfirmationDialog to prevent accidental deletions. The underlying state management includes events for saving, updating, deleting, and searching custom quotes.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/custom\quote · high confidence

Added About Me and Donation screens to Settings

The Settings screen now includes dedicated views for 'About Me' and 'Donation'. The new About Me screen displays developer information in a scrollable list, while the Donation screen presents support options, both styled with a dark theme and consistent typography.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\_screen/about\_me, app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\screen/donation · high confidence

Added Backup & Restore screen for exporting and importing quotes

A new Backup & Restore screen has been added to the app settings, allowing users to export their liked and custom quotes to a JSON backup file or import them back. The screen provides two action cards: one for exporting data (triggering a file save dialog with a timestamped filename) and one for importing data (opening a file picker for JSON files). The UI includes loading states and toast notifications to inform users of success or failure, and prevents export if no quotes are found.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\screen/backup · high confidence

Added Troubleshoot section in Settings

A new Troubleshoot screen has been added to the app's Settings, presenting a list of expandable cards that display common questions and answers. This feature helps users resolve issues related to notifications, widget behavior, data backup, and other app functionalities by providing immediate, in-app guidance without leaving the settings menu.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\screen/troubleshoot · high confidence

Added Zen Audio settings and background playback

Users can now enable a background 'Zen Audio' feature that plays ambient sound while using the app. A new Zen Audio Settings screen allows users to toggle this feature on or off and select a custom audio file from their device, with an option to revert to the default water flow sound. The main activity handles the playback lifecycle, starting the audio when the app is opened (unless on the splash screen) and stopping it when navigating away or disabling the setting.

app/src/main/java/com/shalenmathew/quotesapp/presentation · high confidence

Added broadcast receivers for reliable notification and widget scheduling

The app now includes three new broadcast receivers to handle background tasks more reliably. FavActionBroadcastReceiver handles favorite actions and updates notifications accordingly. NotificationRefreshReceiver manages notification scheduling, including rescheduling after device boot. WidgetRefreshReceiver ensures widgets refresh at configured intervals, with logic to persist alarm times across reboots and respect user-defined refresh settings.

app/src/main/java/com/shalenmathew/quotesapp/presentation/receivers · high confidence

Added domain use cases for custom quote management

This change introduces the domain-layer use cases that enable users to manage their own quotes. Specifically, it adds \GetCustomQuotes\ for retrieving quotes via search, \SaveCustomQuote\ for creating new entries, \UpdateCustomQuote\ for editing existing ones, and \DeleteCustomQuote\ for removal. These are grouped in a \CustomQuoteUseCases\ container to provide a unified interface for the application layer to perform full CRUD operations on custom quotes.

_app/src/main/java/com/shalenmathew/quotesapp/domain/usecases/custom\_quote\usecases · high confidence

Centralized app navigation with new settings and utility screens

The app now uses a centralized \AppNavigation\ component to manage routing for all screens, including the new Custom Quote, Troubleshoot, Notification Source, Widget Source, Backup, About Me, Donation, and Zen Audio Settings screens. This change consolidates navigation logic, ensuring consistent access to these new features from the main app flow.

app/src/main/java/com/shalenmathew/quotesapp/presentation/navigation · high confidence

Daily and frequency-based notification scheduling

The app now supports two notification modes: a daily schedule at a specific time and a recurring frequency interval. This is implemented via the new NotificationWorkManager and ScheduleNotification classes, which handle fetching quotes from network, favorites, or custom sources and displaying them via Android WorkManager and AlarmManager. Users can select their preferred mode and interval/time in settings, and the system will automatically schedule and trigger notifications accordingly.

app/src/main/java/com/shalenmathew/quotesapp/presentation/workmanager/notification · high confidence

Interactive like button and new visual theme for the home screen widget

The home screen widget now features an interactive like button, allowing users to toggle their favorite status directly from the widget without opening the app. This change introduces a new visual theme with rounded corners and a prism background image, along with an animated heart icon that provides visual feedback when liked. The implementation includes a new Glance-based widget receiver, an action callback to handle the like toggle, and a dedicated composable for the animated heart button.

app/src/main/java/com/shalenmathew/quotesapp/presentation/widget · high confidence

Introduces custom quote collections and refactors data repository architecture

The app now supports creating and managing custom quote collections, allowing users to organize quotes into specific groups. This change introduces new repository implementations (CollectionRepositoryImpl, CustomQuoteRepositoryImpl) to handle the persistence of these collections and custom quotes via Room database transactions. Additionally, the data layer has been restructured with new mapper classes (QuoteMappers) and updated repository interfaces (QuoteRepositoryImplementation, FavQuoteRepositoryImpl, WidgetRepositoryImpl) to streamline how quotes are fetched, liked, and displayed on widgets, ensuring that custom and standard quotes are handled consistently across the application.

app/src/main/java/com/shalenmathew/quotesapp/data/repository · high confidence

Introduces domain models for custom quotes, collections, and type-safe collection types

The app now supports creating and managing custom user-defined quotes, which are stored in a dedicated \custom\_quotes\ table and linked to collections via a cross-reference table that distinguishes between custom and standard quotes. Collections are no longer identified by magic integers; instead, a sealed class \CollectionType\ enforces type safety for Favorites, Custom, and user-defined collections. A new \BackupData\ model aggregates these entities to support data backup and restore operations.

app/src/main/java/com/shalenmathew/quotesapp/domain/model · high confidence

Introduction of new domain repository interfaces for quotes, collections, and widgets

The application introduces a set of new domain-layer repository interfaces to structure data access for core features. These include QuoteRepository for fetching and managing displayed/liked quotes, CustomQuoteRepository for user-created quotes, CollectionRepository for organizing quotes into collections with search capabilities, and FavQuoteRepository for handling liked quotes. Additionally, preference repositories (AnimationPreferences, DefaultQuoteStylePreferences) are added to manage user settings for animations and quote styling, while GlanceWidgetManager and WidgetRepository provide interfaces for updating Android Glance widgets. These interfaces define the contract for data operations but do not contain implementation logic.

app/src/main/java/com/shalenmathew/quotesapp/domain/repository · high confidence

New Library screen with custom collections and quote management

Users can now organize quotes into custom collections via a new Library screen. This feature allows creating, editing, and deleting custom collections, and adding or removing quotes from them using a bottom-sheet interface. The Library screen displays system collections (Favorites, Custom) alongside user-defined ones, and tapping a collection opens a detail view with search, pull-to-refresh, and quote-level actions like liking and deleting.

app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/library · high confidence

New Share Screen with Multiple Quote Themes and Customization

A new Share Screen has been introduced, allowing users to generate and share quote images using a variety of visual styles. The screen supports multiple built-in themes including Default, Code Snippet, Brat, Igor, Liquid Glass, Dice Dreams, Reminder, Travel Card, Minimal Black/Brown, YouTube, Artisan, Book Look, Twitter, and Drag-and-Drop. Users can customize specific themes by selecting custom colors (via a color picker for Liquid Glass and Dice Dreams) or uploading personal images (for Artisan, Travel Card, Dice Dreams, YouTube, and Twitter themes). The implementation includes utilities to save the generated quote image to the device gallery or share it directly via other apps, with the default theme selection persisted for future sessions.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share\screen · high confidence

New library collection management use cases

The app introduces a new set of domain use cases for managing quote collections, including creating, updating, and deleting collections, as well as adding or removing quotes from them. A key behavioral change is the enforcement of reserved names: users can no longer create or rename collections to 'Favorites' or 'Custom'. Additionally, the search functionality now distinguishes between Favorites, Custom, and user-defined collections, handling each type appropriately to return the correct quotes.

app/src/main/java/com/shalenmathew/quotesapp/domain/usecases/library · high confidence

New notification time selection screen with frequency and daily modes

Users can now configure notification timing via a dedicated screen that supports two distinct modes: selecting a recurring interval (e.g., every N hours or days) or setting a specific daily time. The interface visually distinguishes the active mode using alpha transparency and provides a time picker for daily scheduling, while persisting the chosen mode and time settings through the application's view model.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/notification\_time\screen · high confidence

New presentation-layer ViewModels for core app features

The app introduces a set of new ViewModels in the presentation layer to manage state and business logic for specific features. BackupDataViewModel handles exporting and importing user data (liked quotes, custom quotes, and collections) as JSON. CollectionDetailViewModel manages the display and interaction (liking, deleting, searching) within specific quote collections. CustomQuoteViewModel enables users to create, edit, delete, and search their own custom quotes. LibraryViewModel oversees the management of user-defined quote collections (adding, updating, deleting, and associating quotes). QuoteViewModel drives the main home screen, fetching quotes, handling likes, swiping, and refreshing when all quotes are displayed. SettingsViewModel centralizes configuration for notifications, widgets, and zen audio. ShareQuoteViewModel manages the default style for shared quotes. These changes represent a structural shift towards more modular, feature-specific state management in the UI layer.

app/src/main/java/com/shalenmathew/quotesapp/presentation/viewmodel · high confidence

New quote sharing themes added

Users can now choose from several new visual styles when sharing quotes, including Artisan Card, Book Look, Dice Dreams, Drag and Drop, Fliplingoes, Minimal Black, Minimal Brown, Travel Card, Twitter Card, and YouTube-style themes. These new options expand the customization available in the share screen's theme selection.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share\screen/components/theme · high confidence

The settings screen now includes a new CardSection component that renders a list of actionable items. Users can now navigate to a new Troubleshoot screen, view a list of other apps, access the About Libraries screen, and visit the About Me page. Additionally, the component supports external links, enabling direct access to the app's GitHub source code, the developer's portfolio website, social media profiles (Twitter, Discord, LinkedIn, LinkTree), and donation platforms (Buy Me a Coffee, Ko-fi).

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\screen/components · high confidence

New settings screens for notification sources, libraries, and more apps

The app now includes dedicated screens within the settings area to improve user control and transparency. Users can configure notification content sources (Favorites, Custom, Network) via the new NotificationSourceScreen, view open-source library attributions via the new AboutLibrariesScreen, and discover other apps via the MoreApps screen. These additions are part of a broader refactor that moves notification configuration out of the main settings view into its own dedicated location.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\screen · high confidence

New utility infrastructure for notifications, theming, and persistent settings

This change introduces a new set of utility components in the app's util package to support enhanced notification scheduling, a wider variety of quote display themes, and persistent user preferences. The new Constants.kt file defines a new custom API base URL (replacing the previous ZenQuotes.io endpoint), a comprehensive list of supported themes (including Minimal Black, Brown, YouTube, Artisan, and Twitter Card styles), and notification identifiers. DataStore.kt provides the persistence layer for user settings such as widget refresh intervals, notification modes (frequency vs. daily time), and zen audio preferences. NotificationExtensions.kt implements the logic for creating notification channels, building notifications with favorite-action buttons, and handling deep-linking to the ShareScreen. NotificationMode.kt introduces an enum to distinguish between frequency-based and daily-time-based notification schedules, while util.kt adds helper functions for WorkManager status checking and time calculations.

app/src/main/java/com/shalenmathew/quotesapp/util · high confidence

New visual themes and font families added to the app

The app now includes new visual customization options, specifically a Neon theme with distinct color definitions (neonBlue, neonPink, etc.) and several new font families (Poppins, Roboto, bratTheme, handWritten, sugarPie) available for use in the UI. Additionally, the theme system has been updated to enforce a dark status bar with light icons and composite the navigation bar color with the surface color for better contrast, while also migrating the package structure from com.example.quotesapp to com.shalenmathew.quotesapp.

app/src/main/java/com/shalenmathew/quotesapp/presentation/theme · high confidence

New widget source selection screen

Users can now choose which sources (Favorites, Custom, or Network) populate the home screen widget via a dedicated settings screen. This new UI allows selecting one or more sources, with the selection persisted to the app's settings.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings\_screen/widget\source · high confidence

Removals

Removal of Favorites Screen UI and supporting data structures

The Favorites screen and its associated UI components have been removed from the application. This change deletes the \FavScreen\ composable, which previously displayed a list of favorite quotes, along with the \FavQuoteState\ data class used to manage the screen's state and the \FavQuoteEvent\ sealed class that handled user interactions like liking a quote. Users will no longer be able to view or interact with their saved favorite quotes through this specific screen.

_app/src/main/java/com/example/quotesapp/ui/fav\screen · high confidence

Removal of Home Screen UI components

The Home Screen UI implementation has been removed from the application. This change deletes the \HomeScreen\ composable, the \QuoteItemListSection\ (which rendered the swipeable quote list and share functionality), and the \QuoteState\ data class used to manage the screen's state. Users will no longer see the home screen interface or be able to interact with quotes via this specific UI layer.

_app/src/main/java/com/example/quotesapp/ui/home\screen · high confidence

Removal of legacy Quote and FavQuote ViewModels

The \QuoteViewModel\ and \FavQuoteViewModel\ classes have been removed from the application. These components previously managed the state and business logic for the home screen quotes and the favorites screen, respectively. Their deletion indicates that the UI layers for these features are no longer supported by these specific ViewModels, likely due to a refactoring or migration to a different architectural pattern.

app/src/main/java/com/example/quotesapp/ui/viewmodel · high confidence

Architecture

Introduction of modular dependency injection and database migration infrastructure

The application now utilizes a centralized Dagger Hilt module (AppModule) to manage dependency injection for core components, including the QuoteDatabase, various repositories, and specific use cases like custom quote management and collection handling. This change introduces a robust database migration path supporting upgrades from version 3 through 10, enabling new features such as custom quotes, display tracking, and quote collections. Additionally, the network layer is configured with OkHttp and Retrofit, including logging interceptors and cache support, to improve reliability and debuggability of API calls.

app/src/main/java/com/shalenmathew/quotesapp/di · high confidence

Behavioural changes

Added ProGuard rules and removed redundant use case wrapper

The app now includes comprehensive ProGuard rules to ensure correct obfuscation and runtime behavior for key components including GSON, Retrofit, Room, Hilt, Glance widgets, WorkManager, and various UI libraries. Additionally, the redundant QuoteUseCase wrapper class has been removed from the domain layer.

app · high confidence

Custom pull-to-refresh animations for the Favorites screen

The Favorites screen now uses a custom pull-to-refresh indicator instead of the default Material 3 component. This new implementation features animated visual effects, including a 'Rainbow Rays' graphic that draws dashed, multi-colored lines during the refresh gesture, a 'Glowing Triangle' that pulses with a blur effect, and a 'White Beam' animation. These changes provide a more distinctive and animated user experience when refreshing the list of favorite quotes.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/fav\screen/util · high confidence

Home screen UI refresh and new interaction events

The home screen has been restructured under the new package name, introducing a rainbow fade-in animation that triggers when quotes load and respects user preferences. The 'Quote of the Day' section now displays the quote text with updated typography and hides error messages in favor of an empty state. Additionally, the quote list now supports new user interactions: swiping quotes, retrying failed loads, and marking quotes as displayed, facilitated by new sealed-class events in the presentation layer.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/home\screen · high confidence

Local data layer refactored with new persistence models and widget support

The local data layer has been significantly restructured to support new app features. The database schema was updated to version 10, introducing support for custom quotes and collections via new DAOs (CustomQuoteDao, CollectionDao) and cross-reference tables. Quote retrieval logic was enhanced with new queries for tracking displayed status, searching, and fetching by ID. Additionally, a new AnimationPreferences implementation was added to manage rainbow animation visibility in memory, and a GlanceWidgetManagerImpl was introduced to handle Android widget state updates. The application package was also renamed from com.example to com.shalenmathew.

app/src/main/java/com/shalenmathew/quotesapp/data/local · high confidence

Package rename and API data model simplification

The remote data layer has been reorganized under the new package name com.shalenmathew.quotesapp.data.remote, replacing the previous com.example.quotesapp structure. Additionally, the QuotesDtoItem data model used for API responses has been simplified by removing the 'a', 'c', and 'h' fields, retaining only the 'q' field for quote content.

app/src/main/java/com/shalenmathew/quotesapp/data/remote · high confidence

Redesigned favorite quote item with share action and haptic feedback

The FavQuoteItem component in the favorites screen has been refactored to replace the direct ViewModel dependency with explicit callback interfaces (onLikeClick, onShareClick), enabling better separation of concerns. The UI now displays both a share icon and a like icon in a horizontal row at the bottom of the card, with the icons resized to 35dp for visual consistency. Additionally, tapping the like icon now triggers a long-press haptic feedback vibration, enhancing the tactile user experience.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/fav\screen · high confidence

Refactor home screen use cases and update package name

The domain layer for the home screen has been reorganized under the new package name com.shalenmathew.quotesapp. Several new use cases were introduced to support specific home screen behaviors: GetLatestQuote retrieves the most recent quote, GetRandomRemoteQuote fetches a random quote from a remote source, GetUndisplayedQuotes retrieves quotes that have not yet been shown, and MarkAsDisplayed tracks which quotes have been viewed. The existing LikedQuote use case was enhanced to support toggling a like status by quote ID in addition to the existing quote object method. A new QuoteUseCase composite class now aggregates these individual use cases for easier dependency injection. Additionally, widget-related use cases (UpdateWidgetUseCase and UpdateWidgetIfSameOrEmptyUseCase) were added to handle widget data updates.

_app/src/main/java/com/shalenmathew/quotesapp/domain/usecases/home\_screen\usecases · high confidence

Refactored bottom navigation to support conditional visibility and expanded tabs

The bottom navigation bar has been restructured to only display on screens that explicitly require it, resolving previous UI flickering issues. The navigation model has been expanded from two tabs (Home, Favorites) to three (Home, Library, Settings), and the implementation now relies on the current route to determine the selected state rather than manual state management, resulting in a more stable and consistent user experience.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/bottom\nav · high confidence

Refactored favorite quote use cases and updated package structure

The favorite quote functionality has been reorganized under the new package name com.shalenmathew.quotesapp. The domain layer now explicitly exposes a FavQuoteUseCase container holding GetFavQuote and FavLikedQuote. GetFavQuote provides a Flow of liked quotes filtered by a query string, while FavLikedQuote now exposes a named saveLikedQuote method to toggle and persist a quote's liked status, removing the previous operator invoke pattern and debug logging.

_app/src/main/java/com/shalenmathew/quotesapp/domain/usecases/fav\_screen\usecases · high confidence

Removal of Dagger Hilt application module

The Dagger Hilt module responsible for providing application-scoped dependencies (including the Quote database, API client, repositories, and use cases) has been removed from the app. This change eliminates the manual dependency injection configuration for these components, implying that the app's dependency graph is now managed through a different mechanism or that these bindings have been moved elsewhere.

app/src/main/java/com/example/quotesapp/di · medium confidence

Removal of Hilt application class

The QuoteApplication class, which served as the entry point for Hilt dependency injection via the @HiltAndroidApp annotation, has been removed from the application. This indicates that the app is no longer using Hilt for dependency injection or that the injection setup has been moved to a different location or removed entirely.

app/src/main/java/com/example/quotesapp · high confidence

Removal of legacy API and resource handling utilities

The app no longer includes the previous API base URL configuration (previously pointing to zenquotes.io) or the generic Resource sealed class used for managing network states (Success, Error, Loading). These utility components have been removed from the codebase, indicating a shift in how data fetching and state management are handled elsewhere in the application.

app/src/main/java/com/example/quotesapp/util · high confidence

Removal of legacy MainActivity entry point

The legacy MainActivity.kt file, which previously served as the main application entry point and housed the navigation graph (Home and Favorites screens) along with the bottom navigation bar, has been removed from the app. This change indicates that the app's startup flow and primary UI structure have been migrated to a different entry point or activity implementation.

app/src/main/java/com/example/quotesapp/ui · high confidence

Removal of legacy domain model and repository interfaces

The domain layer has removed the previous data structures and access interfaces, specifically deleting the \Quote\ and \QuoteHome\ models, the \FavQuoteRepository\ and \QuoteRepository\ interfaces, and the associated \FavQuoteUseCase\ and \GetFavQuote\ use cases. This cleanup eliminates the old architecture for managing and retrieving quotes, indicating a structural shift in how the application handles data persistence and retrieval.

app/src/main/java/com/example/quotesapp/domain · high confidence

Removal of local data persistence and repository layer

The local data storage and repository implementation have been removed from the application. Specifically, the Room database definition (QuoteDatabase), the data mappers (QuoteMappers), and the repository implementations (FavQuoteRepositoryImpl and QuoteRepositoryImplementation) have been deleted. This eliminates the app's ability to cache quotes locally or manage favorite quotes via a local database, shifting the data handling entirely away from the local storage layer.

app/src/main/java/com/example/quotesapp/data · high confidence

Splash screen now displays an animated tagline only on first launch

The splash screen has been updated to conditionally show an animated tagline ('Feel the words. Live the Meaning') exclusively during the app's first launch. Subsequent launches skip the tagline animation, reducing the splash screen delay from approximately 3.7 seconds to 1.5 seconds, while maintaining the fade-in effect for the main 'Quotes' title.

_app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/intro\screen · high confidence

Widget refresh now prioritizes liked quotes and skips retries on failure

The widget update logic has been revamped to use a "Liked Quote First" approach, where the system attempts to fetch a random quote from the user's liked quotes before falling back to custom quotes or network sources. Additionally, to save battery, the widget will no longer retry updates if a refresh fails; instead, it will simply skip that interval and schedule the next attempt.

app/src/main/java/com/shalenmathew/quotesapp/presentation/workmanager/widget · high confidence

Test coverage

Added instrumented tests for QuoteDao; Added tests for the favorite quotes repository; Added unit tests for CustomQuote and Quote ViewModels; Added unit tests for QuoteApi; Added unit tests for WidgetWorkManager; Added unit tests for home screen and widget use cases; Added unit tests for repository implementations; Removed boilerplate unit and instrumentation tests.

Dependencies

Gradle wrapper upgraded to version 8.14.5

The project's Gradle wrapper has been updated to use Gradle 8.14.5 (previously 8.7). This ensures that builds are executed with the newer Gradle distribution, which may include performance improvements, bug fixes, and new features available in that release.

gradle · high confidence

Major dependency upgrades and build configuration overhaul

This update upgrades the Android Gradle Plugin to 8.10.1, Kotlin to 2.1.20, and targets SDK 36, while also upgrading Hilt to 2.56.2, Room to 2.7.2, and Retrofit/OkHttp to version 3.0.0/5.0.0. The build configuration now uses KSP instead of Kapt for annotation processing, enables Gradle configuration cache and parallel execution for faster builds, and adds new dependencies for Glance widgets, WorkManager, and UI effects like Haze and Hypnotic Canvas. Additionally, the application ID and namespace have been changed to com.shalenmathew.quotesapp, and the version has been bumped to 6.0.

(dependencies) · high confidence

Housekeeping

Project documentation and licensing updates

The project now includes an MIT License file, clarifying the open-source terms for users and contributors. The README has been significantly expanded to include a cautionary notice regarding future Android app distribution restrictions, detailed technology stacks (such as Jetpack Compose and Hilt), download links for F-Droid and GitHub releases, and visual previews of the app's features like swiping and widgets. Additionally, the .gitignore file has been updated to exclude more build artifacts and IDE files, and the gradlew script has been made executable.

(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

Score

  • CAI 44 → 47 (+3.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 93 → 95 (+1.8)
  • Architecture 92 → 94 (+2.9)
  • Maturity 58 → 37 (-20.7)
  • Readiness 41 → 50 (+8.2)
  • Security 34 → 53 (+19.1)
  • Domain Modelling 49 → 50 (+1.1)

Resolved (48)

  • Change coupling: CaptureBitmap.kt ↔ CustomQuotesThemes.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/CaptureBitmap.kt)
  • Change coupling: CustomQuotesThemes.kt ↔ util.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/theme/CustomQuotesThemes.kt)
  • Change coupling: DefaultQuoteStylePreferencesImpl.kt ↔ ShareScreen.kt (app/src/main/java/com/shalenmathew/quotesapp/data/local/DefaultQuoteStylePreferencesImpl.kt)
  • Change coupling: QuoteRepositoryImplementation.kt ↔ QuoteUseCase.kt (app/src/main/java/com/shalenmathew/quotesapp/data/repository/QuoteRepositoryImplementation.kt)
  • Change coupling: ShareScreen.kt ↔ CaptureBitmap.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/ShareScreen.kt)
  • Change coupling: ShareScreen.kt ↔ Constants.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/ShareScreen.kt)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/fav_screen/util/CustomPullToRefresh.kt)
  • Duplicated block (10 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/theme/ArtisanCardTheme.kt)
  • Duplicated block (12 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/fav_screen/FavScreen.kt)
  • Duplicated block (14 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/about_libraries_screen/AboutLibrariesScreen.kt)
  • Duplicated block (14 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/custom_quote/CustomQuoteItem.kt)
  • Duplicated block (14 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/donation/DonationScreen.kt)
  • Duplicated block (14 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/theme/CustomQuotesThemes.kt)
  • Duplicated block (15 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/notification_time_screen/NotificationTimeScreen.kt)
  • Duplicated block (15 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/SettingsScreen.kt)
  • Duplicated block (16 lines × 3) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/backup/BackupScreen.kt)
  • Duplicated block (18 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/SettingsScreen.kt)
  • Duplicated block (20 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/notification_source/NotificationSourceScreen.kt)
  • …and 28 more

New (64)

  • Change coupling: AppNavigation.kt ↔ SettingsScreen.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/navigation/AppNavigation.kt)
  • Change coupling: HomeScreen.kt ↔ QuoteItemListSection.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/home_screen/HomeScreen.kt)
  • Change coupling: QuoteRepositoryImplementation.kt ↔ QuoteViewModel.kt (app/src/main/java/com/shalenmathew/quotesapp/data/repository/QuoteRepositoryImplementation.kt)
  • Change-coupling hub: ShareScreen.kt → DefaultQuoteStylePreferencesImpl.kt, CaptureBitmap.kt, Constants.kt (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/ShareScreen.kt)
  • CollectionDetailScreenKt.CollectionDetailScreen (cognitive 22) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/library/CollectionDetailScreen.kt)
  • CollectionDetailScreenKt.CollectionDetailScreen (cyclomatic 23) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/library/CollectionDetailScreen.kt)
  • 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 (10 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/domain/usecases/library/AddCollection.kt)
  • Duplicated block (10 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/theme/DragAndDropTheme.kt)
  • Duplicated block (10–12 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/fav_screen/util/CustomPullToRefresh.kt)
  • Duplicated block (13 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/donation/DonationScreen.kt)
  • Duplicated block (13 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/share_screen/components/theme/ArtisanCardTheme.kt)
  • Duplicated block (14 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/SettingsScreen.kt)
  • Duplicated block (14 lines × 3) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/SettingsScreen.kt)
  • Duplicated block (15 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/notification_time_screen/NotificationTimeScreen.kt)
  • Duplicated block (15 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/SettingsScreen.kt)
  • Duplicated block (15 lines × 2) (app/src/main/java/com/shalenmathew/quotesapp/presentation/screens/settings_screen/notification_source/NotificationSourceScreen.kt)
  • …and 44 more

Changes since last survey

  • 29 commits — 22 feature/other, 7 fixes

By area

  • app/src — 14 commits
  • (root) — 11 commits
  • app/build.gradle.kts — 2 commits
  • (repo) — 1 commit
  • fastlane/metadata — 1 commit

Notable commits

  • fix: feat/Libary : bug fixes #1
  • fix: feat/Libary : bug fixes #2 - data integrity in collection-quote relationships
  • fix: feat/Libary : bug fixes #4 -Refactor collection IDs to type-safe CollectionType sealed class
  • fix: feat/Libary : code clean up - fixed ordering issue
  • fix: feat/Libary : fixes
  • fix: feat/Libary : naming convention fixed
  • fix: gradle version fixes
  • change: 5.5 version bump
  • change: Merge branch 'master' into development Merging master.
  • change: Simplify project description in README
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update README.md
  • change: Update image presentation in README
  • change: feat/Libary : added backup library update
  • …and 9 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

shalenMathew/Quotes-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 22 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 c327cb043d3b9f05f99208212f9b0e6a37b941dd — 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-821afab8930d.