Jetpack Android Starter is a production-ready template for modern Android development built on Jetpack Compose and clean architecture principles. It provides a comprehensive foundation with feature modules for authentication, home, profile, and settings, integrated with Firebase for authentication, Firestore, and Crashlytics. The architecture follows a two-layer UI/Data pattern with Repository pattern, Hilt dependency injection, Room for local storage, DataStore for preferences, and WorkManager for background synchronization. UI is built with Compose Material 3, featuring custom reusable components and type-safe navigation using Kotlin Serialization. The template includes CI/CD via GitHub Actions, automated dependency updates, documentation generation, and performance optimizations like baseline profiles. It demonstrates strong engineering practices with clear separation of concerns, testable architecture, and reusable patterns that solve common Android development challenges.
Compressor is a native Android video compression application built entirely in Kotlin using Jetpack Compose and Material3 for the UI, and Android's Media3 Transformer for the actual encoding. It does not rely on FFmpeg; instead, it leverages hardware-accelerated codec APIs (H.264, H.265, AV1) to achieve fast, lightweight compression. The app follows a single-activity architecture with a ViewModel managing the full lifecycle: video selection via SAF (Storage Access Framework) or share intents, track probing to determine source properties, building a compression plan based on user-defined presets or target file size, executing the transformation, and saving the output to the gallery or a custom folder. The codebase is well-structured with clear separation between UI screens, reusable composable components (InfoRow, CheckboxRow, SelectionChip, etc.), utility classes for hardware detection and file operations, and a theme system that supports dynamic colors and Android 16 tokens. It includes comprehensive unit tests for the ViewModel, utilities, and audio processor, as well as CI/CD workflows and fastlane metadata for Play Store deployment. The project demonstrates strong Android engineering practices, with attention to edge cases (device-specific workarounds for MediaTek, Huawei, Pixel), fallback logic in audio encoding, and a customizable filename token system. While the core compression logic is tightly coupled to the app's domain, several utility modules and UI components are designed with reusability in mind and could be extracted for other Android media projects.
EhViewer is a high-performance Android client for browsing, reading, and downloading galleries from the E-Hentai / ExHentai image hosting sites. It is a modern fork of the classic EhViewer app, built entirely with Kotlin Multiplatform for shared logic and Jetpack Compose with Material Design 3 for the UI. The architecture is modular (app, core/common, core/data, core/ui, core/i18n) and leverages Rust via JNI for performance-critical HTML parsing and image processing (border detection, QR code detection, WebP animation). The app features a full-featured reader with multiple reading modes, a foreground download service with speed tracking, comprehensive offline support via Room/SQLite, and integration with GitHub releases for updates. The codebase is actively maintained, uses the latest Kotlin, Compose, and Ktor versions, and demonstrates strong engineering practices with clean abstractions, coroutine-based reactive state, and type-safe preferences. It is a dedicated application project with no data science or research components.
Kvaesitso is a highly customizable, search-focused Android launcher built with Kotlin and Jetpack Compose. It replaces the default home screen with a unified search interface that indexes apps, contacts, calendar events, files, locations (OpenStreetMap), Wikipedia articles, websites, and more. The architecture is modular, with over 40 Gradle modules separating UI, data repositories, services, core interfaces, and a plugin SDK. The launcher features a dynamic theming engine based on Material Color Utilities (HCT color space), support for icon packs, custom widgets (clock, weather, music, notes, calendar), gesture navigation, and a plugin system for extending search and weather providers. It uses Koin for dependency injection, Room for persistence, Ktor for networking, and WorkManager for background tasks. The codebase demonstrates strong engineering practices with clean separation of concerns, reactive data flows via Kotlin Flow, and extensive use of Compose for UI.
Phocid is a full-featured offline Android music player built with Jetpack Compose and Material3, targeting Android 11+. It serves as a modern replacement for Phonograph, offering extensive customization of themes, artwork colors, layouts, and playback behavior. The application manages a local music library by scanning MediaStore and optionally using JAudioTagger and OpusMetadataIo for advanced metadata extraction. It supports playback via Media3 ExoPlayer with custom shuffle, repeat, speed/pitch control, and a sleep timer. The UI includes a tabbed library view (tracks, albums, artists, genres, folders, playlists), a player screen with artwork, synced lyrics (LRC), and a queue, plus home screen widgets and Android Auto integration. Playlist management features M3U import/export with relative paths and bidirectional sync using file timestamps. The codebase is well-structured with clear separation of concerns: data layer (LibraryIndex, Playlist, Preferences), service layer (PlaybackService, PlayerManager), UI components (custom scrollbar, swipe-to-dismiss, carousel, dialogs), and utility modules (AsyncCache, SaveManager, StateFlow extensions). It includes unit tests for core logic (lyrics parsing, playlist I/O, search, sorting, caching) and uses Kotlinx Serialization for persistence with upgrade paths. The architecture follows a single-activity pattern with Compose navigation and a ViewModel-driven state management. While primarily an application, it contains reusable data engineering patterns such as generic persistence, concurrent caching, and locale-aware sorting that could be extracted for other projects.
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.
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.
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).