{"id":50578109,"url":"https://github.com/sureshfizzy/JellyCine","last_synced_at":"2026-06-21T19:00:38.116Z","repository":{"id":310050157,"uuid":"1022493338","full_name":"sureshfizzy/JellyCine","owner":"sureshfizzy","description":"A Jellyfin + Emby Client App with modern UI","archived":false,"fork":false,"pushed_at":"2026-06-16T05:16:54.000Z","size":5837,"stargazers_count":86,"open_issues_count":19,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T07:43:34.697Z","etag":null,"topics":["android","emby","emby-api","emby-client","jellyfin","jellyfin-client","jellyfin-media-player","kotlin"],"latest_commit_sha":null,"homepage":"https://github.com/sureshfizzy/JellyCine","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sureshfizzy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"sureshfizzy","patreon":"sureshs","buy_me_a_coffee":"Sureshfizzy","custom":"https://www.paypal.me/sureshfizzy"}},"created_at":"2025-07-19T07:30:16.000Z","updated_at":"2026-06-16T05:16:59.000Z","dependencies_parsed_at":"2025-08-15T12:31:02.340Z","dependency_job_id":"a4fe5d79-28b4-48ea-971b-7b79734c5219","html_url":"https://github.com/sureshfizzy/JellyCine","commit_stats":null,"previous_names":["sureshfizzy/jellycine"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/sureshfizzy/JellyCine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sureshfizzy%2FJellyCine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sureshfizzy%2FJellyCine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sureshfizzy%2FJellyCine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sureshfizzy%2FJellyCine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sureshfizzy","download_url":"https://codeload.github.com/sureshfizzy/JellyCine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sureshfizzy%2FJellyCine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34622271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","emby","emby-api","emby-client","jellyfin","jellyfin-client","jellyfin-media-player","kotlin"],"created_at":"2026-06-05T00:00:33.527Z","updated_at":"2026-06-21T19:00:38.111Z","avatar_url":"https://github.com/sureshfizzy.png","language":"Kotlin","funding_links":["https://github.com/sponsors/sureshfizzy","https://patreon.com/sureshs","https://buymeacoffee.com/Sureshfizzy","https://www.paypal.me/sureshfizzy","https://www.buymeacoffee.com/Sureshfizzy","https://www.patreon.com/c/sureshs/membership"],"categories":["Kotlin"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"phone/src/main/assets/jellycine_logo.png\" alt=\"JellyCine Logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eJellyCine\u003c/strong\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003eJetpack Compose Android client for Jellyfin and Emby, focuses on a fast, fluid UI and smooth playback.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.buymeacoffee.com/Sureshfizzy\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support%20development-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black\" alt=\"Buy Me A Coffee\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.patreon.com/c/sureshs/membership\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Patreon-become%20a%20patron-FF424D?style=for-the-badge\u0026logo=patreon\u0026logoColor=white\" alt=\"Patreon\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.google.com/store/apps/details?id=com.jellycine.app\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Google%20Play-download%20app-34A853?style=for-the-badge\u0026logo=google-play\u0026logoColor=white\" alt=\"Google Play\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Features\n\n- Seerr integration for discovery, search, recommendations, detail pages, request badges, request limits, and title requests\n- MPV playback engine with fallback when ExoPlayer cannot render video\n- Merge-version support with local version selection for multi-source items (No server side support required)\n- Jellyfin and Emby support with automatic endpoint resolution\n- Spatial audio passthrough when supported by the device/output route\n- Compose-first UI with Home, My Media, Search, Favorites, and Settings sections\n- Offline-aware navigation mode that falls back to downloaded content when network is unavailable\n- Immersive search experience with suggestions, live results, and categorized results\n- Offline downloads with queueing, pause/resume/cancel, and persistent state recovery\n- Season and series download actions with storage estimation before enqueueing\n- Media3 ExoPlayer playback with Jellyfin FFmpeg extension integration\n- In-player streaming quality selection, audio transcoding controls, and configurable player cache\n- Subtitle styling controls with improved subtitle and audio track handling\n- Google Cast support with inline remote playback controls\n- Gesture controls in player (seek, volume, brightness), lock mode, and start-maximized preference\n- Skip Intro support: shows a Skip Intro button when IntroDB/TheIntroDB markers are available; configurable in player settings\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/home.jpg\" alt=\"Home\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n  \u003cimg src=\"docs/screenshots/viewall.jpg\" alt=\"View All\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n  \u003cimg src=\"docs/screenshots/search-immersive.jpg\" alt=\"Search - immersive\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/settings.jpg\" alt=\"Settings\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n  \u003cimg src=\"docs/screenshots/details.jpg\" alt=\"Details\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n  \u003cimg src=\"docs/screenshots/searchscreen.jpg\" alt=\"Search Screen\" width=\"30%\" style=\"max-width:200px;min-width:100px;margin:5px\" /\u003e\n\u003c/div\u003e\n\nFor community discussions and support, see [Discussions](https://github.com/sureshfizzy/JellyCine/discussions).\n\n## Project Structure\n\n- `phone`: Phone-specific Android app module (Compose UI, navigation, player, settings)\n- `tv`: TV-specific Android app module (leanback/DPAD support, sidebar rail, TV-specific UI/flows)\n- `data`: APIs, repositories, models; multiplatform/shared networking and serialization helpers\n- `core`: Shared player, preferences, and utility code used by app modules\n- `shared`: Shared UI components and image infrastructure moved into its own module\n- `docs`: Screenshots and documentation assets\n\n## Tech Stack\n\n- Kotlin, Coroutines, Flow\n- Jetpack Compose + Material 3 + Navigation Compose\n- Hilt + KSP for DI/code generation\n- Ktor Client + OkHttp 5\n- Coil 3 for image loading\n- Media3 ExoPlayer (`exoplayer`, `ui`, `session`, `dash`, `hls`, `smoothstreaming`, `effect`)\n- `org.jellyfin.media3:media3-ffmpeg-decoder` extension\n\n## Getting Started\n\n### Prerequisites\n\n- Android Studio (latest stable recommended)\n- JDK 17\n- Android SDK platform for API 36\n\n### Build and Run\n\n1. Clone the repository.\n2. Open it in Android Studio.\n3. Let Gradle sync complete.\n4. Select a device/emulator (Android 8.1+).\n5. Run the `app` module.\n\nCLI build:\n\n```bash\n./gradlew :phone:assembleDebug\n```\n\nDebug and release APKs are named as:\n\n- `jellycine-debug-\u003cversion\u003e.apk`\n- `jellycine-release-\u003cversion\u003e.apk`\n\n## Privacy\n\nSee [PRIVACY](PRIVACY) for the current privacy policy.\n\n## Contributing\n\nIssues and pull requests are welcome. For large feature work, open an issue first to align on scope.\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsureshfizzy%2FJellyCine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsureshfizzy%2FJellyCine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsureshfizzy%2FJellyCine/lists"}