JellyCine
Jetpack Compose Android client for Jellyfin and Emby, focuses on a fast, fluid UI and smooth playback.
- Jellyfin and Emby support with automatic endpoint resolution
- Spatial audio passthrough when supported by the device/output route
- Compose-first UI with Home, My Media, Search, Favorites, and Settings sections
- Offline-aware navigation mode that falls back to downloaded content when network is unavailable
- Immersive search experience with suggestions, live results, and categorized results
- Offline downloads with queueing, pause/resume/cancel, and persistent state recovery
- Season and series download actions with storage estimation before enqueueing
- Media3 ExoPlayer playback with Jellyfin FFmpeg extension integration
- In-player streaming quality selection, audio transcoding controls, and configurable player cache
- Subtitle styling controls with improved subtitle and audio track handling
- Google Cast support with inline remote playback controls
- Gesture controls in player (seek, volume, brightness), lock mode, and start-maximized preference
- Skip Intro support: shows a Skip Intro button when IntroDB/TheIntroDB markers are available; configurable in player settings
For community discussions and support, see Discussions.
phone: Phone-specific Android app module (Compose UI, navigation, player, settings)tv: TV-specific Android app module (leanback/DPAD support, sidebar rail, TV-specific UI/flows)data: APIs, repositories, models; multiplatform/shared networking and serialization helperscore: Shared player, preferences, and utility code used by app modulesshared: Shared UI components and image infrastructure moved into its own moduledocs: Screenshots and documentation assets
- Kotlin, Coroutines, Flow
- Jetpack Compose + Material 3 + Navigation Compose
- Hilt + KSP for DI/code generation
- Ktor Client + OkHttp 5
- Coil 3 for image loading
- Media3 ExoPlayer (
exoplayer,ui,session,dash,hls,smoothstreaming,effect) org.jellyfin.media3:media3-ffmpeg-decoderextension
- Android Studio (latest stable recommended)
- JDK 17
- Android SDK platform for API 36
- Clone the repository.
- Open it in Android Studio.
- Let Gradle sync complete.
- Select a device/emulator (Android 8.1+).
- Run the
appmodule.
CLI build:
./gradlew :phone:assembleDebugDebug and release APKs are named as:
jellycine-debug-<version>.apkjellycine-release-<version>.apk
See PRIVACY for the current privacy policy.
Issues and pull requests are welcome. For large feature work, open an issue first to align on scope.
This project is licensed under the GNU General Public License v3.0. See LICENSE.






