This is a high-quality Android sample application from Nordic Semiconductor that demonstrates Bluetooth Low Energy (BLE) connectivity using the Kotlin BLE Library. The app connects to a peripheral implementing the LED Button Service (LBS), allowing users to toggle an LED and detect button clicks and long presses. It features a modular architecture with separate modules for the device specification (transport-agnostic), BLE transport implementation, UI, and scanner. The app uses Jetpack Compose for UI, Hilt for dependency injection, Navigation 3 for navigation, and a foreground service for background operation. It includes both a native flavor for real BLE hardware and a mock flavor for testing without physical devices. The codebase is well-structured, follows modern Android best practices, and serves as a reference for building BLE apps with the Nordic BLE library.
A Kotlin library for Jetpack Compose that provides customizable fling/scroll physics, ported from Android's OverScroller. It offers configurable deceleration, friction, gravity, spline curves, and presets, with snap, adaptive, and pager behaviors. The library is structured as a single artifact with a clean configuration builder pattern, and includes a sample app for demonstration. Physics calculations are isolated in well-tested modules (FlingCalculator, AndroidFlingSpline), and documentation diagrams are regenerable from a self-contained Python script that ports the same math. The codebase demonstrates strong engineering practices with unit tests, migration guides, and consistent Kotlin/Compose idioms.
LinkSheet is an Android application that intercepts URL intents and presents a Material3 bottom sheet allowing users to choose which app or browser handles the link. In production, it replaces the removed Android 12+ chooser, supporting preferred app per domain, usage-based sorting, browser modes (always ask, none, whitelisted, single browser), and advanced URL processing including AMP to HTML conversion, redirect following, ClearURLs (tracker removal), FastForward (redirect bypass), LibRedirect (privacy-friendly frontends), and a custom rule engine (scenarios) for fine-grained link routing. The architecture is multi-modular: core app module, feature modules (analytics, backup, browser, device compat, downloader, engine, libredirect, profile, remote config, shizuku, wiki), integration libraries (amp2html, clearurl, embed-resolve, fastforward, mime-types), and shared libraries (api, compose, bottom-sheet, scaffold, http). Key entry points are `BottomSheetActivity`, `MainActivity`, and `LinkEngineService`. The system uses Koin dependency injection, Jetpack Compose for UI, Room for local caching, Ktor/OkHttp for networking, and Shizuku for privileged operations. It is actively maintained with nightly builds, extensive unit/instrumentation tests, and a large localization effort across 20+ languages.
Rush is a cross-platform lyrics application built with Kotlin Multiplatform and Compose Multiplatform, targeting Android, iOS, and Desktop (JVM). Its primary function is to search for, display, and share synced lyrics (line-synced and syllable-synced) from multiple sources including LrcLib, Genius, and a custom LyricsPlus API. The app integrates with the system's media playback to auto-detect the currently playing song and fetch matching lyrics. Notable features include romanization of lyrics for non-Latin scripts (Japanese, Korean, Hindi, Punjabi, Cyrillic) via a dedicated Android library, customizable visualizers (wave, gradient, hypnotic) for lyrics backgrounds, and a variety of share card styles (Spotify, Rushed, Brat, etc.). The architecture follows MVVM with Koin for dependency injection, Room for local persistence, DataStore for preferences, and Ktor for networking. The codebase is well-modularized with shared core, logic, and UI modules, though significant parts of iOS and Desktop support remain stubbed or incomplete.
DUNE is a specialized Android TV client application for the Jellyfin media server ecosystem. It functions as a media consumption interface optimized for remote control navigation, featuring video/audio playback, library browsing, live TV (DVR) management, and extensive user customization. The architecture is a monolithic Android application with modularized internal structure (app, playback, preference modules), utilizing a hybrid UI approach that combines Jetpack Compose for modern screens (preferences, overlays) with Android Leanback widgets for traditional TV browsing. The codebase demonstrates strong separation of concerns, particularly in the playback layer which abstracts media rendering logic from the UI. It relies heavily on the Jellyfin SDK for API communication and ExoPlayer (Media3) for media rendering.
LibrePods is a cross-platform application suite whose verified purpose is to liberate Apple AirPods from the Apple ecosystem, providing full accessory management on non-Apple hardware. The Android app (Kotlin/Jetpack Compose) offers battery monitoring via BLE manufacturer-data parsing, noise-control mode switching, ear detection, head-gesture recognition, hearing aid adjustments, custom EQ, device takeover, home-screen widgets, Quick Settings tiles, and iOS-style popup overlays. The Linux companion (Qt6/QML) delivers the same control surface through a system tray app backed by BlueZ and PulseAudio, with a Rust rewrite in progress per the ci-linux-rust.yml workflow.
Episteme is a modern, cross-platform e-book and document reader built with Kotlin Multiplatform and Compose Multiplatform. It supports a wide array of formats including EPUB, PDF, MOBI, audiobooks (M4B), FB2, DOCX, ODT, PPTX, and comic archives (CBZ/CBR). The app offers a rich reading experience with paginated and vertical scroll modes, text-to-speech, ink and text annotations, OPDS catalog browsing, cloud sync via Google Drive and Firestore, AI-powered summarization, and extensive customization (themes, fonts, brightness). The codebase is organized into a shared module containing core business logic, models, and policies, with platform-specific implementations for Android (native Compose, Room, WorkManager), iOS (Swift), and Desktop (Compose Desktop, Swing interop). The architecture follows a clean separation of concerns with expect/actual abstractions for platform services, making it a strong example of production-ready KMP application design.
Muviz is a modern Android application built with Jetpack Compose that serves as a movie and TV show discovery client for the TMDB API. It follows a clean MVVM architecture with feature-based packaging, using Hilt for dependency injection, Retrofit for networking, Room for local favorites persistence, and the Paging 3 library for efficient data loading. The app provides a bottom-navigation interface with Home, Search, Favorites, and Account screens, supporting both movies and TV series with categories like trending, popular, upcoming, and top-rated. It includes a custom theme system with light, dark, system, and Material You options, and features animated UI components such as a vote average arc indicator and swipe-to-delete on favorites. The codebase is well-structured and uses modern Android development practices, though some screens (like cast details) are incomplete and there is some code duplication in ViewModels.
This is an Android TV application that serves as a client for media servers (primarily Jellyfin). It implements a Clean Architecture with clear separation between Data, Domain, and Presentation layers, using Jetpack Compose for the UI, Hilt for dependency injection, and Kotlin Coroutines/Flow for asynchronous operations. The application provides a TV-optimized interface for browsing media libraries, playing content with support for multiple players (ExoPlayer and MPV), handling subtitles/audio tracks/video quality, and managing user preferences. Key features include offline caching, background synchronization, advanced video format support (HDR, Dolby Vision), and a polished user experience with animations and focus handling for TV remotes.
FirebaseUI-Android is an open-source library providing pre-built UI components for Firebase Authentication, Realtime Database, Cloud Firestore, and Cloud Storage. It is a multi-module Android library published on Maven Central. The primary module, `firebase-ui-auth`, has been rewritten in Jetpack Compose with Material 3, offering a high-level composable (`FirebaseAuthScreen`) and a Kotlin DSL for configuration. It supports 12+ identity providers (Google, Facebook, Email, Phone, Apple, etc.), multi-factor authentication (SMS/TOTP), credential linking, anonymous upgrade, and email link sign-in. The `firebase-ui-database` and `firebase-ui-firestore` modules provide RecyclerView adapters with paging support (AndroidX Paging 3) for displaying Firebase data. The `firebase-ui-storage` module integrates with Glide for loading images from Firebase Storage. A demo app and end-to-end tests against the Firebase Auth Emulator are included. Architecturally, the library is split into separate Gradle modules: `auth`, `database`, `firestore`, `storage`, `common`, and `lint`. The auth module uses Kotlin coroutines, StateFlow, and a sealed class state machine (`AuthState`) to manage authentication flows. The database/firestore modules are older Java-based implementations using lifecycle-aware adapters and observable arrays. The library maintains a version catalog (libs.versions.toml) with modern dependencies (Kotlin 2.4.10, AGP 9.3.0, Compose BOM 2026.06.01). Key entry points include `FirebaseAuthScreen` (Compose), `FirebaseAuthUI` (singleton for sign-out/delete/auth state), `AuthFlowController` (Activity-based alternative), `FirebaseRecyclerAdapter`/`FirestoreRecyclerAdapter`, and `FirebaseImageLoader` (Glide integration). The primary data flows involve Firebase SDKs for authentication, database listeners, and image loading. The library is designed to be embedded in host Android apps, handling complex auth flows with minimal developer effort. The codebase demonstrates strong craftsmanship in the auth moduleβs state machine and Compose UI, but shows signs of technical drift due to mixed UI generations (legacy XML layouts alongside new Compose), some deprecated API usage (e.g., `fetchSignInMethodsForEmail`, `startActivityForResult`), and incomplete localizations. The database/firestore modules are mature but use older patterns. Overall, the library is well-structured and actively maintained, with a beta version (10.0.0-beta04) indicating ongoing development.
This repository is a GitHub template for bootstrapping Kotlin Android projects with a modern, opinionated build setup. It provides a multi-module structure (app, library-android, library-kotlin, library-compose) with pre-configured static analysis via detekt, CI/CD via GitHub Actions, and publishing to Maven Central. The codebase demonstrates best practices for Gradle Kotlin DSL, version catalogs, and precompiled script plugins. The sample modules include a simple factorial calculator to illustrate cross-module dependencies and testing patterns (unit, instrumentation, and Compose UI tests). While the template is not a production application itself, it serves as a solid foundation for new Android projects, emphasizing code quality and automation from the start.
NoWakeLock is a production-grade Android Xposed module and companion app that provides granular control over system power management. It intercepts and selectively blocks or limits WakeLocks, Alarms, and Services at the Android framework level via Xposed hooks, enabling users to reduce battery drain. The system consists of two processes: an Xposed module running in the system_server process that performs the actual interception using both legacy (XposedBridge) and modern (libxposed API 102) APIs, and a standard Android application with a Jetpack Compose UI that allows users to configure per-app and per-item blocking rules, view real-time statistics, and manage settings. Data flows from the Xposed hooks through a ContentProvider-based IPC (XProvider) into a dual Room database architecture (AppDatabase for configuration, InfoDatabase for runtime events). The app features Material Design 3, multi-language support, backup/restore via JSON, multi-user profiles, module health diagnostics, and hot reload support for modern Xposed frameworks. The codebase demonstrates a clean MVVM architecture with Koin dependency injection, Kotlin Coroutines/Flow for reactive data flow, and comprehensive unit/instrumentation tests. While primarily a standalone application, several core concurrency utilities (BoundedEventQueue, ReloadableEventConsumer, WakelockRegistry) could be extracted and reused in other Android or system-level projects.
Seal is an Android application that serves as a graphical frontend for yt-dlp, enabling users to download videos and audio from a wide range of websites. Built with Kotlin and Jetpack Compose, it features a Material Design 3 interface with dynamic color theming. The app manages download tasks through a state machine, supports playlists, custom command templates, cookies, SponsorBlock integration, and extensive format selection. It relies on yt-dlp (via youtubedl-android), FFmpeg, and aria2c as external engines, and uses Room for local database storage, MMKV for preferences, and Koin for dependency injection. The architecture is a single-activity Compose Navigation app with a foreground download service. While the codebase is well-organized and actively maintained, it exhibits some technical drift (e.g., deprecated Accompanist WebView, minimal test coverage) and contains a few monolithic modules. Notable reusable components include a standalone color science library implementing CAM16/HCT, a backup/restore utility for database objects, and a custom motion system for Material Shared Axis transitions.
NuvioTV is a full-featured Android TV media player application that aggregates content from Stremio-style addons, debrid services (Real-Debrid, Torbox, Premiumize), and torrent streaming via TorrServer. It provides a rich browsing experience with personalized continue-watching, library management, and cross-device watch progress sync through a Supabase backend. The application deeply integrates with tracking services (Trakt and Simkl) for scrobbling and history, and includes an extensive settings system for theme customization, playback controls, and addon management. Architecturally, it is a single-module Android app built with Kotlin, Jetpack Compose for TV (androidx.tv.material3), Hilt dependency injection, and a custom fork of AndroidX Media3 (ExoPlayer) with native components for Dolby Vision processing, subtitle sanitization, and frame-rate detection. The codebase follows MVVM with ViewModels emitting sealed UI states via StateFlow, and uses DataStore for per-profile preferences. It includes two build flavors (full with plugin runtime and updater, playstore with stripped features) and an extensive test suite covering sync logic, playback policies, and data migrations. The system's complexity lies in its multiple external integrations (addon protocol, debrid APIs, tracking providers, Supabase RPC) and the custom player pipeline that handles codec failover, subtitle merging, and adaptive bitrate control. While the code is generally well-structured with clean abstractions and reusable UI components, it suffers from moderate technical drift due to vendored AndroidX modifications, flavor divergence, and reliance on rapidly evolving third-party APIs.
Chocola is an offline music player for Android built with Kotlin and Jetpack Compose. It provides a full-featured music experience: library browsing by albums, artists, playlists, and folders; playback with equalizer, speed/pitch control, sleep timer, and shuffle/repeat modes; synced lyrics display and editing; metadata editing; Android Auto support; and home screen widgets. The app uses Material 3 design with a distinctive 'cute' theme, custom navigation, and extensive localization. The architecture follows a typical Android MVVM pattern with Room for playlist persistence, DataStore for preferences, ExoPlayer/Media3 for playback, and Koin for dependency injection. It scans local media via MediaStore and SAF, applies configurable filters (minimum duration, hidden tracks, whitelisted folders), and uses TagLib for metadata editing. While the codebase is well-organized and demonstrates solid Android engineering, it relies heavily on experimental Compose APIs and a custom navigation library, which introduces some technical drift risk. Overall, it's a mature, actively maintained open-source project suitable for reuse of specific UI components and data-layer patterns.
Geto is an Android application that allows users to apply specific device settings (like disabling Developer Options or USB debugging) when launching particular apps, and automatically revert those settings when exiting the app. The app follows a clean architecture with separate modules for presentation, domain, and data layers. It uses Jetpack Compose for UI, Hilt for dependency injection, and Kotlin Coroutines for asynchronous operations. Key features include creating app shortcuts that trigger settings changes, a foreground service to monitor system setting changes, and secure storage of app-specific configurations using Room database and DataStore. The application requires the WRITE_SECURE_SETTINGS permission to modify system settings, which must be granted via ADB or Shizuku.
SimpMusic is a production-grade Kotlin Multiplatform music player for Android and desktop (JVM) that streams from YouTube Music's undocumented backend. The codebase is organized around a shared Compose Multiplatform UI module (composeApp), Android entry points (androidApp), a desktop entry point (desktopApp), and optional feature modules for Google Cast, Last.fm scrobbling, and crash reporting. A separately referenced core submodule supplies domain and media-service logic. Internally it uses MVVM with Koin dependency injection, Repository interfaces backed by Room entities and DataStore, StateFlow-based ViewModels, and a large custom Compose component library covering home feed, library management, playlist sync, fullscreen player, lyrics, equalizer, podcasts, Android home-screen widgets, and a desktop mini-player. The app is shipped as a packaged consumer application with Play Store metadata, GitHub Actions, fastlane changelogs, and build variants that swap real integrations for empty stubs in FOSS builds.
This repository is a collection of Android quickstart samples demonstrating various Firebase products. Each sample is a standalone Android application showcasing integration with Firebase services such as Authentication, Realtime Database, Firestore, Cloud Storage, Cloud Functions, Analytics, and more. The samples are provided in both Java and Kotlin, often with parallel implementations, and follow modern Android architecture patterns including ViewModels, Navigation Component, and Jetpack Compose in newer samples. The repository includes shared internal modules for common UI components (chooserx) and custom lint rules (lintchecks) to maintain code quality across samples. The primary purpose is to serve as educational resources for developers learning to integrate Firebase into Android applications.
FlorisBoard is a free and open-source Android keyboard (IME) application written in Kotlin with Jetpack Compose. In production it functions as a fully-featured soft keyboard service (FlorisImeService extends InputMethodService) with clipboard history management (Room-backed), emoji input with search and history, multi-language keyboard layouts (50+ locale JSON layouts), a custom extensions system for themes/keyboards/language packs, and a custom stylesheet-based theming engine called Snygg that powers all IME UI styling. The app also includes a settings activity (FlorisAppActivity) with ~30 configuration screens, a spell-checker service, backup/restore infrastructure, incognito mode, and a native Rust/JNI library scaffold for performance-critical work. The architecture is a multi-module Gradle build (:app, :lib:android, :lib:compose, :lib:kotlin, :lib:native, :lib:snygg) with a clear separation between the Android-specific app layer and reusable common KMP libraries.
Animite is an unofficial Android client for AniList (with partial MyAnimeList support) for tracking anime and manga. The application is built with a modern Android stack: Kotlin, Jetpack Compose, Material3, Apollo Kotlin (GraphQL), Ktor (REST), DataStore, Hilt, and Coil. It features a multi-module architecture with clear separation of concerns: API layers, core UI components, navigation, and feature modules (explore, profile, media, settings, social, anime, manga, banner). The app supports browsing, searching, filtering, detailed media pages with dynamic theming (time-of-day based banner), user profile management, and list editing with drag-and-drop reordering. The codebase demonstrates strong modularity and reusable UI patterns, though it relies heavily on experimental Compose APIs and has a few code quality concerns (e.g., hardcoded credentials, large screen files, alpha version instability).