Skip to content

sureshfizzy/JellyCine

Repository files navigation

JellyCine Logo

JellyCine

Jetpack Compose Android client for Jellyfin and Emby, focuses on a fast, fluid UI and smooth playback.

Buy Me A Coffee Patreon

Features

  • 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
  • Supports Season/Series level download support with storage estimation before enqueueing
  • Media3 ExoPlayer playback with Jellyfin FFmpeg extension integration
  • Subtitle styling controls
  • Gesture controls in player (seek, volume, brightness), lock mode, and start-maximized preference
  • HDR and Dolby Vision capability analysis with fallback handling

Screenshots

Home View All Search - immersive
Settings Details Search Screen

Project Structure

  • app: Android app module (Compose UI, navigation, settings, downloads, player screens)
  • data: APIs, repositories, models, DataStore/shared preference backed configuration
  • core: Shared player/auth utilities (player preferences, codec/HDR helpers, audio device detection)
  • setup: Included module, currently a placeholder without active source code

Tech Stack

  • Kotlin, Coroutines, Flow
  • Jetpack Compose + Material 3 + Navigation Compose
  • Hilt + KSP for DI/code generation
  • Retrofit 3 + OkHttp 5
  • Coil 3 for image loading
  • Media3 ExoPlayer (exoplayer, ui, session, dash, hls, smoothstreaming, effect)
  • org.jellyfin.media3:media3-ffmpeg-decoder extension

Getting Started

Prerequisites

  • Android Studio (latest stable recommended)
  • JDK 17
  • Android SDK platform for API 36

Build and Run

  1. Clone the repository.
  2. Open it in Android Studio.
  3. Let Gradle sync complete.
  4. Select a device/emulator (Android 8.1+).
  5. Run the app module.

CLI build:

./gradlew :app:assembleDebug

Debug and release APKs are named as:

  • jellycine-debug-<version>.apk
  • jellycine-release-<version>.apk

Privacy

See PRIVACY for the current privacy policy.

Contributing

Issues and pull requests are welcome. For large feature work, open an issue first to align on scope.

License

This project is licensed under the MIT License. See LICENSE.