Gurupreet/ComposeCookBook
54.1
Adequate · 25 September 2026
108.8k
lines of production code
Kotlin
primary language
4
measurements over time
What this system is
This system is a comprehensive Jetpack Compose cookbook and demonstration application designed to showcase modern Android UI development patterns. It provides a curated collection of reusable components, templates, and standalone demo apps that illustrate Material 3 theming, complex animations, and advanced layout techniques. The codebase serves as a practical reference for implementing features such as swipeable lists, predictive back gestures, and modular architecture using Kotlin and Gradle.
How it got here
2020 — Material 3 migration and legacy cleanup
26 changes.
The project underwent a comprehensive migration to Material 3, introducing dynamic theming, adaptive layouts, and new demo screens for predictive back and shared-element transitions. This modernization effort was accompanied by the removal of numerous legacy UI components, deprecated animation patterns, and obsolete demo implementations to streamline the codebase. The update also included significant build system improvements, such as adopting Kotlin DSL, version catalogs, and upgrading to Kotlin 2.1 and Compose BOM.
2021 — Material 3 migration and demo expansion
44 changes.
The project focused on migrating the codebase to Material 3 and Android 15, updating core themes, components, and build configurations. This period saw a significant expansion of the demo catalog with new standalone applications for social media, streaming, and utilities, alongside numerous new UI components and animation samples.
2023–2026 — UI testing expansion and demo additions
10 changes.
This period focused on expanding test coverage for various Jetpack Compose UI components, including pull-to-refresh, adaptive layouts, swipeable lists, and carousel interactions. It also involved adding a new meditation demo app with a Compose-based interface and implementing screenshot tests for visual regression detection.
Features
Add Compose chart components
The charts module now includes a new Charts composable that displays various chart types, including line charts with live data updates, bar charts, and pie charts. This adds visual data representation capabilities to the application using Jetpack Compose.
components/charts/src/main/java · high confidence
Add Custom Fling List with configurable scroll behavior
The app now includes a new Custom Fling list demo in the Home section. This feature allows users to scroll a list using three distinct behaviors: native Android scrolling, a smooth pre-set scroll, or a fully custom fling behavior. Users can access a dedicated settings screen to adjust detailed physics parameters for the custom mode, such as scroll friction, gravitational force, and spline tension, enabling fine-grained control over the list's momentum and feel.
app/src/main/java/com/guru/composecookbook/ui/home/customfling · high confidence
Add Gmail demo app with Material You styling and accessibility improvements
The Gmail demo application has been added to the demos/gmail directory, featuring a full UI implementation including a home screen with a drawer, message list, detail view, and compose screen. The app utilizes Material You design principles and includes specific accessibility enhancements such as content descriptions for icons and a dedicated 'Create new email' button in the header when TalkBack is active. It also incorporates type-safe navigation routes and sample data for email content.
demos/gmail · high confidence
Add Instagram demo with stories and post feed
The Instagram demo now includes a full home screen featuring a scrollable post feed and a horizontal stories bar. Users can view individual posts with like, comment, and share interactions, and tap on profile stories to view them in a full-screen popup with auto-advancing progress bars and tap-to-navigate controls.
demos/instagram/src/main/java · high confidence
Add InterestTag composable component
A new \InterestTag\ composable has been added to the tags library, providing a clickable, rounded-corner tag UI element. It supports customizable colors (background and content) via a \TagColors\ interface, adjustable shapes, and text styling, defaulting to Material 3 color scheme values for seamless integration with the app's theme.
components/tags/src/main · high confidence
Add Paint demo app with drawing canvas and tools
A new Paint demo application has been added to the demos/paint location, providing a freehand drawing experience. The app features a DrawingCanvas component that captures touch input to render paths, and a DrawingTools UI that allows users to select colors, view recently used colors, and adjust brush stroke width via a floating action button. The entry point is PaintActivity, which hosts the PaintApp composable containing a scaffold with a top app bar for clearing the canvas.
demos/paint · high confidence
Add Payment Card template with Material 3 UI and card preview
The payment card template now includes a new Add Payment Screen that allows users to input card details (holder name, number, expiry, CVC) using Material 3 components like Scaffold and Button. The interface features a live, animated 3D card preview that flips to show the CVC when entered, detects Visa card types, and formats the card number with spaces. Input fields are enhanced with a custom visual transformation to automatically format the card number as it is typed.
templates/paymentcard/src/main/java · high confidence
Add Spotify demo app with Home, Search, and Library navigation
The demos/spotify directory now contains a complete Spotify-style demo application. Users can navigate between Home, Search, and Library tabs via a bottom navigation bar. The Home screen features a scrollable grid of albums and horizontal lanes with dynamic gradient backgrounds. The Search screen includes a search bar and a grid of results with dominant color extraction. The Library screen displays a staggered grid of albums. Tapping any album navigates to a Detail screen that shows album info, a song list with shuffle/download controls, and an animated toolbar that changes appearance on scroll.
demos/spotify · high confidence
Add Timer demo with animated views and countdown logic
The app now includes a new Timer demo in the home section, featuring a ViewModel that drives a live countdown to the end of the day. This demo showcases two distinct UI components: a static TimerView that displays time in configurable formats (HH:MM:SS, HH:MM, or MM:SS) with customizable styling, and a TimerViewAnimation component that renders the time with various slide and bounce entrance effects, supporting optional icons and custom themes.
app/src/main/java/com/guru/composecookbook/ui/home/timer · high confidence
Add Twitter demo app with Material 3 UI
The demos/twitter module now includes a complete Twitter demo application. This adds a new TwitterActivity entry point and a home screen (TwitterHome) built with Material 3 components like Scaffold and ExtendedFloatingActionButton. The UI features reusable components for displaying tweets (TweetItem), user profiles (ProfilePicture, ProfileInfo), and interaction counters (IconCounterBar with messages, retweets, likes, and share actions). It also includes an animated heart button for likes and uses the ComposeCookBookMaterial3Theme.
demos/twitter · high confidence
Add meditation demo app with Compose UI
The meditation demo module now includes a complete UI built with Jetpack Compose, featuring a home screen with a bottom navigation menu, category filters, daily thoughts, and feature cards. The implementation includes the main activity, data models, UI components, and theme definitions, along with basic instrumentation tests and build configuration files.
demos/meditation · high confidence
Add onboarding screen with carousel and Material 3 styling
The onboarding module now includes a new screen featuring a horizontal pager with Lottie animations, a 'Skip' button, and a 'Next'/'Let's Begin' button that advances through three onboarding steps. The UI uses Material 3 components (Scaffold, Button, Text) and applies Material Theme typography and colors, with a circular clip on the action button and a dot indicator row at the bottom.
templates/onboarding/src/main/java · high confidence
Added Betty demo app for viewing sports betting odds
Introduced the Betty demo application, an Android app built with Jetpack Compose that displays the best odds from The Odds API. The app features a single-screen UI that categorizes odds by probability (High, Medium, Low) using sticky headers, supports pull-to-refresh, and persists data locally via Room. It utilizes Hilt for dependency injection, Coroutines for threading, and WorkManager to fetch fresh data daily and send notifications when updates are available.
demos/betty · high confidence
Added Cascade menu template
Introduced a new Cascade menu template in the \templates/cascademenu\ module, providing a hierarchical, multi-level dropdown menu component for Jetpack Compose. This addition includes the core \CascadeMenu\ composable with animated transitions between menu levels, a builder DSL (\cascadeMenu\) for defining nested item structures, and supporting classes for menu state, colors, and item definitions, allowing users to implement complex, nested navigation or action menus.
templates/cascademenu · high confidence
Added ConstraintLayout demo screens
The app now includes a new ConstraintLayout section in the home navigation, featuring two distinct list item layouts: a standard horizontal list item with an image, title, subtitle, source, and action button, and a larger card-style item with a full-width image header. These demos showcase the use of ConstraintLayout for complex UI arrangements, including vertical chains, relative positioning, and dimension constraints, providing users with visual examples of how to structure responsive Compose layouts.
app/src/main/java/com/guru/composecookbook/ui/home/constraintlayout · high confidence
Added MotionLayout animation demos for buttons and images
The app now includes a new MotionLayout demo screen that showcases declarative layout animations using the ConstraintLayout Compose library. This demo features two examples: one where three buttons animate between a vertical stack and a horizontal row layout, and another where four images transition from a vertical column to a 2x2 grid. Users can trigger these animations by clicking the respective UI elements, demonstrating the capabilities of the experimental MotionLayout API in Compose.
app/src/main/java/com/guru/composecookbook/ui/home/motionlayout · high confidence
Added analog clock demo with live time display
The app now includes a new Clock demo in the home section, featuring a custom Compose Canvas-based ClockView that renders an analog clock face with hour, minute, and second hands. The ClockViewModel drives the UI by updating hand angles every second based on the current system time, allowing users to view a live, animated clock within the cookbook.
app/src/main/java/com/guru/composecookbook/ui/home/clock · high confidence
Added biometric and PIN lock authentication templates
Introduced new Kotlin source files for the PinLock template: BiometricActivity handles Android BiometricPrompt authentication (login via fingerprint/face, fallback to PIN), and PinLockView provides a Compose-based 4-digit PIN entry UI with numeric keypad, error/success states, and a fingerprint icon that launches BiometricActivity. This adds a ready-to-use biometric + PIN lock flow to the template project.
templates/pinlock/src/main/java · high confidence
Added utility components and test tags for UI consistency and testing
This change introduces new utility files in the UI utils package to support the application's interface and testing infrastructure. CommomComponents.kt provides reusable UI elements like HeadingSection, TitleText, SubtitleText, and a RotateIcon animation helper, standardizing how headers and animated icons are rendered across the app. Extentions.kt adds a simple Boolean helper, while FloatUtil.kt improves robustness when converting string inputs to floats in text fields. Additionally, TestTags.kt defines a comprehensive set of constants for UI testing, covering bottom navigation, home screen layouts, animations, and templates, enabling more reliable automated UI tests.
app/src/main/java/com/guru/composecookbook/ui/utils · high confidence
Cryptoapp demo migrated to modular architecture with Android Wear support
The cryptoapp demo has been restructured into separate app and data modules, introducing a dedicated data layer that handles CoinGecko API integration via Retrofit, local storage with Room, and dependency injection. The app module now features a Material 3 UI with a new home screen displaying a wallet card, favorite management, and paginated crypto lists, alongside a detail screen with charts. Additionally, a new Android Wear module provides a standalone wearable experience with a swipeable list of cryptocurrencies and detail views, configured as a standalone app in the manifest.
demos/cryptoapp · high confidence
Dialogs screen migrated to Material 3 with new bottom sheet and date/time picker demos
The Dialogs screen in the Home section has been updated to use Material 3 components, replacing the previous Material 2 implementation. This change introduces new demo capabilities, including a full-screen bottom sheet layout and integrated date and time pickers. The UI now utilizes Material 3 primitives such as \ModalBottomSheet\, \Scaffold\, and \TopAppBar\, and supports dynamic dark theme toggling via intent extras.
app/src/main/java/com/guru/composecookbook/ui/home/dialogs · high confidence
Home screen now includes Modifiers, Android Views, Pull-to-Refresh, and Motion Layout demos
The Home screen's dynamic showcase has been expanded to include four new demo categories: Modifier usage (demonstrating layout, clipping, and gesture modifiers), Android Views integration, Pull-to-Refresh lists, and Motion Layout animations. These new demos are now accessible from the Home screen's dynamic UI wrapper, which has also been migrated to Material 3 and Jetpack Compose Activity conventions.
app/src/main/java/com/guru/composecookbook/ui/home/dynamic · high confidence
Material 3 Widget Showcase and Swipe Button
The Learn Widgets screen now features a comprehensive set of Material 3 components, including Buttons, App Bars, Badges, Bottom Sheets, Dialogs, List Items, Navigation Rails, Search Bars, and Segmented Buttons. A new Swipe Button component has been added, allowing users to trigger actions via a horizontal drag gesture with animated states. Existing components like Chips and Loaders have been migrated to Material 3 APIs and reorganized within the new Learn Widgets module.
app/src/main/java/com/guru/composecookbook/ui/learnwidgets · high confidence
New Advanced Lists demo with swipe-to-dismiss and animation options
The Advanced Lists section now includes a new activity that showcases three distinct list behaviors: animated list items with selectable effects (fade, scale, slide, rotate), shimmer loading placeholders with multiple animation modes (fade, translate, vertical), and swipeable lists using Material 3's SwipeToDismissBox. The swipeable list demo allows users to delete or archive items via horizontal swipes, with an undo action provided through a Snackbar that correctly restores items and scrolls them back into view.
app/src/main/java/com/guru/composecookbook/ui/home/advancelists · high confidence
New Android Views integration sample added
A new 'Android Views Inside @Column()' sample page has been added to the Home tab, demonstrating how to host legacy Android UI components within a Compose layout. This entry point showcases specific integrations for TextView, Button, Lottie animations, AdMob ads, and Google Maps, illustrating lifecycle management and state synchronization for these native views.
app/src/main/java/com/guru/composecookbook/ui/home/androidviews · high confidence
New Dating App demo with swipeable cards and chat
A new DatingApp demo has been added to the showcase, featuring a Material 3 UI with a bottom navigation bar for Discover, Chats, and Profile sections. The Discover screen implements a Tinder-style card stack using a custom DraggableCard component that supports swipe gestures to accept or reject profiles, while the Chats screen displays a list of recent conversations with match indicators. The app is structured as a standalone Gradle module with its own activity and ViewModel.
demos/datingapp · high confidence
New Lottie animation assets added to the animations module
The animations/lottie module now includes four new Lottie JSON animation files: cryptoload.json, food.json, loader.json, and profile.json. These assets, along with a new AndroidManifest.xml for the module, provide new visual animations for the application.
animations/lottie · high confidence
New Material 3 Pull-to-Refresh demo added
A new demo screen has been added to the app that showcases the Material 3 PullToRefreshBox component. This example demonstrates how to implement a pull-to-refresh gesture on a LazyColumn list, simulating a network delay to prepend a new item and automatically scroll the list to the top upon completion.
app/src/main/java/com/guru/composecookbook/ui/home/pullrefreshdemos · high confidence
New Templates section for browsing and launching demo screens
The app now includes a dedicated Templates screen that lists available demo categories (such as Login, Profiles, Charts, and Payment Card) in a scrollable list. Tapping a category launches the corresponding demo in a new activity, which applies the Material 3 theme and handles specific template requirements like biometric prompts or dark mode settings.
app/src/main/java/com/guru/composecookbook/ui/templates · high confidence
New TikTok-style demo application
A new TikTok-inspired demo has been added to the cookbook, featuring a vertical video feed with a bottom navigation bar (Home, Discover, Create, Inbox, Me). The app uses type-safe navigation routes for screen transitions, displays trending hashtags in the Discover section, and includes a user profile view with follower statistics and media tabs. Video playback is handled via AndroidX Media3, and images are loaded using Coil.
demos/tiktok · high confidence
New animated FAB component with expandable icon and text
A new \AnimatingFabContent\ composable has been added to the FAB component module, enabling a Floating Action Button that animates between a collapsed state (showing only an icon) and an extended state (showing an icon and text). The implementation uses Jetpack Compose animations to smoothly transition the button's width and the text's opacity, providing a polished user experience for expanding action buttons.
components/fab · high confidence
New animation demonstration screens and components
The app now includes a dedicated Animations section featuring multiple new Composable screens and components. Users can explore modern animations like like-button keyframes, animated counters with slide/fade transitions, and shimmer/pulse/wave loading effects. The update also introduces state-based animations (animating colors, DP, floats, offsets, and custom classes), suspending Animatable animations for drag gestures, multi-state transitions, and various visibility APIs including AnimatedVisibility with custom enter/exit transitions and animateContentSize.
app/src/main/java/com/guru/composecookbook/ui/animation · high confidence
New canvas animations and coming soon component added
This change introduces new UI components to the application. In the animations/canvas module, two new Composable functions are added: MultiStateAnimationCircleFilledCanvas, which displays concentric circles with animated radii and varying opacity, and MultiStateAnimationCircleStrokeCanvas, which renders a rotating arc with a stroke style. Additionally, the components/comingsoon module now includes a ComingSoon composable that displays a Lottie loading animation along with 'Coming Soon' and 'work in progress' text labels.
animations/canvas, components/comingsoon · high confidence
New data module with album provider and expanded demo catalog
The app now includes a dedicated data module that centralizes sample content and demo navigation. This module introduces an AlbumsDataProvider with a curated list of music albums (including artists like Adele, Ed Sheeran, and BlackPink) and their associated resources, alongside a new Album data model. The existing DemoDataProvider has been moved to this module and updated to reference the new model package. Additionally, the HomeScreenItems enum has been expanded to include new demo categories such as Advanced Lists, Pull Refresh, Custom Fling, Motion Layout, Adaptive UI, Predictive Back, Contrast-aware M3 theme, and Shared Element transitions, while several social media icon drawables and basic string resources have been added to support these features.
data · high confidence
New demo app launcher screen
A new central entry point, DemoUIList, has been added to the app, presenting a scrollable list of buttons that allow users to launch individual demo applications. This screen integrates navigation to various standalone demo modules, including Instagram, Twitter, YouTube, Gmail, Paint, Spotify, CryptoApp, MoviesApp, DatingApp, TikTok, and Meditation, enabling users to explore each demo from a single hub.
app/src/main/java/com/guru/composecookbook/ui/demoapps · high confidence
New demo screens for adaptive layouts, contrast-aware theming, predictive back, and shared-element transitions
The app now includes four new demo activities in the home section: AdaptiveUIActivity demonstrates responsive layouts using Material 3's NavigationSuiteScaffold and ListDetailPaneScaffold to adapt between single-pane and multi-pane views based on window size; ContrastThemeActivity showcases accessibility-focused Material 3 theming by allowing users to switch between Standard, Medium, and High contrast levels, with Android 14+ system contrast preferences automatically applied; PredictiveBackActivity illustrates the Android 15+ predictive back gesture, animating a navigation drawer in sync with the user's swipe progress; and SharedElementActivity provides a smooth transition demo using Compose's SharedTransitionLayout to animate album art and titles between list and detail views. Additionally, HomeScreen has been refactored to support these new demos and includes an accessibility fix that displays a modal bottom sheet for color selection when a screen reader is active.
app/src/main/java/com/guru/composecookbook/ui/home · high confidence
New draggable horizontal color picker component
A new ColorPicker composable has been added to the components/colorpicker module, providing a horizontal slider that displays a gradient of hues. Users can select a color by tapping or dragging a circular indicator across the bar, with the selected color passed back via a callback. The component uses Material 3 theming for the indicator border and typography.
components/colorpicker · high confidence
New infinite looping carousel with auto-advance
The carousel component now supports infinite scrolling in both directions and automatic page advancement. This is implemented via a new \InfiniteCarousel\ composable that uses a large virtual page count to enable seamless looping, along with a custom \Pager\ and \PagerState\ to handle the underlying paging logic. The carousel automatically advances to the next item every 3 seconds when idle, but pauses during user interaction (dragging). Pagination dots are also included to indicate the current position.
components/carousel/src/main/java · high confidence
New vertical grid layout components added
The verticalgrid component now includes two custom Compose layouts: VerticalGrid, which arranges items into evenly sized columns, and StaggeredVerticalGrid, which distributes items across columns based on available width to create a masonry-style effect. These components allow users to display content in flexible vertical grid patterns within their applications.
components/verticalgrid · high confidence
Project initialization with MIT license and updated Gradle wrapper
The repository is initialized with an MIT License and a comprehensive README documenting the ComposeCookBook collection of UI demos. The Gradle wrapper scripts (gradlew and gradlew.bat) are updated to a newer POSIX-compliant version that improves path resolution and error handling, and the .gitignore is expanded to exclude modern IDE and build artifacts.
(repo-wide) · high confidence
Theme module introduces Material 3 support and dynamic color theming
The theme module has been restructured to support both Material 2 and Material 3 design systems. It now includes a new \ComposeCookBookMaterial3Theme\ composable that enables dynamic color theming (Material You) on Android 12+ devices, alongside static color palettes for other versions. The module also provides a \Material3Card\ component, gradient background modifiers, and helper utilities for text fields and bitmap color extraction. Additionally, several drawable assets and resource files have been migrated from the app module to this centralized theme module.
theme · high confidence
Removals
Removal of ConstraintLayout demo components
The ConstraintLayout demo screen and its associated list item components (ConstraintLayoutListItem and ConstraintLayoutBigListItem) have been removed from the application. This deletion eliminates the UI examples that previously demonstrated complex constraint-based layouts, vertical chains, and specific image/text arrangements within the ConstraintLayout demos section.
app/src/main/java/com/guru/composecookbook/ui/constraintlayout · high confidence
Removal of deprecated Bottom Sheet and Modifier demo screens
The Bottom Sheet and Modifier demonstration screens in the dynamic UI section have been removed. This cleanup eliminates obsolete components that relied on deprecated APIs and unstable states, such as the manual animation clock handling and the \gravity\ modifier, which were no longer functional or compatible with the current Jetpack Compose version.
app/src/main/java/com/guru/composecookbook/ui/dynamic · high confidence
Removal of empty Spotify Home demo component
The empty SpotifyHome composable, which previously served as a placeholder for the Spotify home screen demo, has been removed from the application. This cleanup eliminates unused code from the Spotify demo UI module.
app/src/main/java/com/guru/composecookbook/ui/demoui/spotify · high confidence
Removal of legacy Material Widgets screen and components
The 'All Material Widgets' screen and its underlying component implementations (including buttons, layouts, chips, text inputs, loaders, toggles, snack bars, and cards) have been removed from the application. This deletion eliminates the dedicated UI section that previously showcased these specific Material Design components and their various styling options.
app/src/main/java/com/guru/composecookbook/ui/widgets · high confidence
Removal of legacy YoutubeChip component
The \YoutubeChip\ composable, previously used to render selectable text chips with specific styling (rounded corners, borders, and color states based on selection), has been removed from the YouTube demo UI. This deletion eliminates the custom surface-based chip implementation in favor of the current UI structure.
app/src/main/java/com/guru/composecookbook/ui/demoui/youtube · high confidence
Removal of legacy carousel and pager components
The custom \Pager\ implementation and the \CarouselLayout\ component have been removed from the application. This eliminates the deprecated, manually implemented horizontal paging logic and the specific carousel UI patterns (including dot indicators and various item layouts) that relied on these components.
app/src/main/java/com/guru/composecookbook/ui/carousel · high confidence
Removal of legacy list item components
The GridListItem and VerticalListItem components in the lists UI module have been removed. These files, which previously rendered individual items using older Compose APIs (such as EmphasisAmbient and specific layout modifiers), are no longer part of the application codebase.
app/src/main/java/com/guru/composecookbook/ui/lists · high confidence
Removed legacy DemoUI host and list components
The legacy \DemoUIHostActivity\ and \DemoUIList\ components, which previously served as the entry point and navigation list for demo UIs (such as Instagram, Twitter, Gmail, and YouTube), have been removed from the application. This change eliminates the old activity-based hosting mechanism and the associated list interface that allowed users to select and launch these specific demo screens.
app/src/main/java/com/guru/composecookbook/ui/demoui · high confidence
Removed legacy Instagram demo UI components
The Instagram demo UI module has been removed from the application. This change deletes the source files for the home screen (InstagramHome.kt), individual post list items (InstagramListItem.kt), and the stories row (InstagramStories.kt), effectively eliminating this specific demo view from the app.
app/src/main/java/com/guru/composecookbook/ui/demoui/instagram · high confidence
Removed legacy animation definitions and screen
The \AnimationDefinations.kt\ and \AnimationScreen.kt\ files in the Animations package have been deleted. This removes the previous implementation of single-value and multi-state animations (including color, float, and dp transitions) that relied on the older \transitionDefinition\ API and \animate()\ modifier, effectively cleaning up deprecated animation patterns from the app.
app/src/main/java/com/guru/composecookbook/ui/Animations · high confidence
Removed obsolete Gmail UI demo components
The legacy Gmail demo implementation has been removed from the application. Specifically, the \GmailHome.kt\ file (which defined the main scaffold, top app bar, and floating action button) and the \GmailListItem.kt\ file (which defined the individual email list item layout using ConstraintLayout) have been deleted. This cleanup eliminates the old UI structure in favor of newer implementations.
app/src/main/java/com/guru/composecookbook/ui/demoui/gmail · high confidence
Twitter demo UI components removed
The Twitter demo UI implementation, specifically the home screen and list item components, has been removed from the application. This deletion eliminates the legacy Compose code that rendered the Twitter-style feed and individual tweet cards, effectively removing this specific demo view from the app.
app/src/main/java/com/guru/composecookbook/ui/demoui/twitter · high confidence
Behavioural changes
4 commits (0 fixes) modifying screens
A change to existing behaviour in screens — 4 commits, 7 files.
screens · medium confidence · unverified
Home list UI components migrated to Material 3
The list item components in the home screen (GridListItem, VerticalListItem, HorizontalListItem, and VerticalListItemSmall) have been updated to use Material 3 styling, replacing the previous Material 1/2 components like Card with Material3Card and updating typography and layout modifiers. The ListViewActivity and its supporting files have been refactored to use the new Material 3 Scaffold, TopAppBar, and ComponentActivity base class, ensuring the home list views render with the updated Material You design system.
app/src/main/java/com/guru/composecookbook/ui/home/lists · high confidence
Login screen now uses Material 3 components and includes a custom animated progress indicator
The login interface has been updated to use Material 3 components, such as \Scaffold\ and \OutlinedButton\, replacing previous Material 2 equivalents. Additionally, a new \HorizontalDottedProgressBar\ component has been added to provide visual feedback during the login process, animating dots when the user initiates authentication.
templates/login/src/main/java · high confidence
Migrate to Material 3 and add Templates navigation
The app has been updated to use Material 3 components (e.g., MaterialTheme, NavigationBar) and a new Material 3 theme implementation. A new 'Templates' tab has been added to the bottom navigation, replacing the previous 'Profile' entry. The main activity now initializes Mobile Ads and supports dynamic system UI color changes based on the selected color palette.
app/src/main/java/com/guru/composecookbook · high confidence
Migration to Kotlin DSL and UI layout refactoring
The app build system has been migrated from Groovy to Kotlin DSL (build.gradle.kts), updating related configuration files like proguard-rules.pro to reflect the new script name. Additionally, the DialogType enum was removed, and the UI layout strategy was changed to use Box, which may affect how dialog components are rendered and stacked.
app · medium confidence
Movies demo app migrated to a standalone Gradle module
The Movies demo application has been restructured into a dedicated Gradle module (demos/moviesapp), separating its UI, data, and domain layers from the main project. This change introduces a new app entry point with MoviesHomeActivity and MovieDetailActivity, implements a bottom navigation bar for Showing, Trending, and Watchlist tabs, and integrates Coil 3 for image loading. The data layer now uses a dedicated MovieDIGraph for dependency injection, connecting Retrofit API calls and Room database operations to the UI via ViewModels.
demos/moviesapp · high confidence
New Material You-styled Profile template with scrollable UI
The profile template now features a redesigned user interface that adopts Material You design principles, including dynamic color usage via MaterialTheme.colorScheme and Material 3 components like Scaffold and TopAppBar. The screen layout has been restructured into a vertically scrollable view containing a top section with an animated profile image and name, a social media row, and distinct sections for 'About Me', 'My Interests', 'My Photography', and 'More Info'. This change updates the visual appearance and interaction model of the profile page to align with modern Android design standards.
templates/profile/src/main/java · high confidence
Standardized build configurations via reusable Gradle plugins
The build system now uses new reusable Gradle plugins in buildSrc to standardize module configurations. A common plugin for Compose modules enforces Java 17 compatibility and enables the Compose compiler, while a separate plugin for Kotlin modules adds the KSP (Kotlin Symbol Processing) plugin alongside the same Java and Compose settings. This refactoring centralizes build logic, ensuring consistent compilation targets and build features across the project.
buildSrc/src/main/kotlin · high confidence
Support for dynamic system UI theming and color palettes
The app now allows the status and navigation bars to change color dynamically based on the selected theme. This is enabled by a new SystemUI helper that manages bar colors and icon contrast across Android API levels, and a new AppThemeState that tracks the current dark mode setting and active color palette. The previous static color definitions have been removed to support this more flexible theming approach.
app/src/main/java/com/guru/composecookbook/theme · high confidence
Updated Android SDK targets to API 35
The project now targets Android 15 (API 35) for both compilation and runtime execution, with the minimum supported SDK remaining at API 25. This ensures compatibility with the latest Android platform features and requirements.
buildSrc/src/main/kotlin/com · high confidence
YouTube demo app extracted and migrated to Material You
The YouTube demo has been moved from the main app module into a standalone \demos/youtube\ directory, establishing a modular structure for this sample. The UI has been updated to follow Material You design principles, including the introduction of a new \YoutubeChip\ component and visual adjustments to the top app bar elevation based on theme brightness. Under the hood, the codebase has been modernized by migrating from legacy Compose APIs (such as \LazyColumnFor\ and \imageResource\) to their current equivalents (\LazyColumn\ and \painterResource\), and the layout logic in list items has been refined for better alignment and text handling.
demos/youtube · high confidence
Test coverage
Added Android UI tests for the Infinite Carousel component; Added Compose UI tests for tags and login modules; Added UI tests for Contrast Theme activity; Added UI tests for home screen list options and layouts; Added UI tests for swipeable list interactions; Added UI tests for the Fling List and Settings screens; Added UI tests for the Predictive Back demo screen; Added UI tests for the Pull Refresh List demo; Added UI tests for the Shared Element Demo; Added UI tests for the adaptive demo activity; Added instrumentation tests for the Home Screen; Added instrumentation tests for the bottom navigation bar; Added screenshot tests for the InterestTag component; Added unit tests for Home Screen data model.
Dependencies
Migrate to Gradle version catalog and upgrade to Kotlin 2.1.20 with Compose BOM
The project has been restructured to use a Gradle version catalog (gradle/libs.versions.toml) for centralized dependency management, replacing the previous flat build configuration. This upgrade includes updating Kotlin to version 2.1.20 (utilizing the K2 compiler) and adopting the Jetpack Compose BOM (2024.12.01) to unify Compose library versions. Additionally, the build system now uses KSP instead of KAPT for Room annotation processing, and the app's compile and target SDKs have been bumped to 35 (Android 15).
(dependencies) · high confidence
Updated Gradle Wrapper to version 8.9
The project's Gradle wrapper has been upgraded from version 6.6-rc-6 to 8.9. This change updates the build tool distribution URL and adds configuration properties for network timeout and distribution validation, ensuring builds use the newer Gradle engine.
gradle · 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 39 → 54 (+14.9)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 94 → 95 (+1.1)
- Architecture 94 → 95 (+0.9)
- Maturity 50 → 59 (+9.1)
- Readiness 33 → 71 (+37.8)
- Security 37 → 64 (+26.7)
- Domain Modelling 34 → 40 (+5.4)
Resolved (37)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (templates/profile/src/main/java/com/guru/composecookbook/profile/BottomScrollingContent.kt)
- Duplicated block (11 lines × 10) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (11 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/advancelists/AnimatedLists.kt)
- Duplicated block (11 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/timer/TimerDemo.kt)
- Duplicated block (11 lines × 2) (demos/gmail/src/main/java/com/guru/composecookbook/gmail/ui/create/CreateMessageBody.kt)
- Duplicated block (12 lines × 3) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (12 lines × 4) (demos/moviesapp/data/src/main/java/com/guru/composecookbook/moviesapp/data/repositories/MoviesLaneRepositoryImpl.kt)
- Duplicated block (13 lines × 2) (templates/profile/src/main/java/com/guru/composecookbook/profile/MoreInfoSection.kt)
- Duplicated block (13 lines × 3) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (14 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (14 lines × 3) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (15 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (15 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (15 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (24 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (24 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (7 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/learnwidgets/TextInputs.kt)
- Duplicated block (9 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/dialogs/DialogsActivity.kt)
- …and 17 more
New (76)
- AnimateAsStateAnimationsKt.DrawLayerWithAnimateAsStateAnimations (cognitive 27) (app/src/main/java/com/guru/composecookbook/ui/animation/AnimateAsStateAnimations.kt)
- AnimateAsStateAnimationsKt.DrawLayerWithAnimateAsStateAnimations (cyclomatic 28) (app/src/main/java/com/guru/composecookbook/ui/animation/AnimateAsStateAnimations.kt)
- Change coupling: AdvanceListsActivity.kt ↔ DialogsActivity.kt (app/src/main/java/com/guru/composecookbook/ui/home/advancelists/AdvanceListsActivity.kt)
- Change coupling: DialogsActivity.kt ↔ ListViewActivity.kt (app/src/main/java/com/guru/composecookbook/ui/home/dialogs/DialogsActivity.kt)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (demos/betty/README.md)
- Duplicated block (10 lines × 10) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (10 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/dialogs/BottomSheetLayouts.kt)
- Duplicated block (10 lines × 2) (demos/gmail/src/main/java/com/guru/composecookbook/gmail/ui/create/CreateMessageScreen.kt)
- Duplicated block (10 lines × 3) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (10–12 lines × 2) (demos/moviesapp/app/src/main/java/com/guru/composecookbook/moviesapp/ui/details/components/MovieDetailContent.kt)
- Duplicated block (12 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/SettingsPage.kt)
- Duplicated block (12 lines × 2) (demos/cryptoapp/data/src/main/java/com/guru/composecookbook/cryptoapp/data/db/ListTypeConverter.kt)
- Duplicated block (13 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/customfling/VerticalFlingerListItem.kt)
- Duplicated block (13 lines × 2) (app/src/main/java/com/guru/composecookbook/ui/home/dialogs/BottomSheetLayouts.kt)
- Duplicated block (16 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (19 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (19 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- Duplicated block (19 lines × 2) (app/src/main/java/com/guru/composecookbook/MainActivity.kt)
- …and 56 more
Changes since last survey
- 83 commits — 80 feature/other, 3 fixes
By area
- (repo) — 44 commits
- app/src — 14 commits
- buildSrc/src — 6 commits
- .github/workflows — 5 commits
- (root) — 3 commits
- gradle/libs.versions.toml — 3 commits
- .github/dependabot.yml — 2 commits
- components/carousel — 2 commits
- components/tags — 2 commits
- app/build.gradle.kts — 1 commit
- demos/moviesapp — 1 commit
Notable commits
- fix: Merge pull request #225 from Gurupreet/ci/stabilize-and-post-merge-fixes
- fix: ci: stabilize the PR gate and fix post-merge issues
- fix: test: cover the swipe-to-dismiss demo and fix undo not restoring the row
- change: Merge branch 'issue-13-infinite-carousel' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-183-media3' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-187-pull-to-refresh' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-188-swipe-dismiss' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-189-version-catalog' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-190-adaptive' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-191-coil3' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-193-nav-2.8' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-199-dep-refresh' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-200-predictive-back' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-201-roborazzi' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-202-contrast-theme' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-203-shared-element' of dipenpradhan/ComposeCookBook
- change: Merge branch 'issue-68-ui-tests' of dipenpradhan/ComposeCookBook
- change: Merge branch 'master' into dependabot/github_actions/actions-f760d8410b
- change: Merge branch 'master' into dependabot/gradle/com.google.android.material-material-1.14.0
- change: Merge branch 'master' into issue-13-infinite-carousel
- …and 63 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
Gurupreet/ComposeCookBook 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 25 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 565690c3efa54e0fc45a4c1ca8d3ee2c85de8cb5 — 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-dd72cc24c749.