Skip to content
/ AFinity Public

A modern, native Android Jellyfin client built with Kotlin, Jetpack Compose, Material 3, and LibMPV.

License

Notifications You must be signed in to change notification settings

MakD/AFinity

Repository files navigation

Afinity - Yet Another Jellyfin Client

AFinity Banner

Release GitHub commits since latest release GitHub commit activity Stars Issues Pull Requests Downloads GitHub Downloads (all assets, latest release) License

A native Android client for Jellyfin servers built with Jetpack Compose and Material 3.

Overview

Android Platform   Language   Framework   UI   Server Version

Afinity provides a clean, responsive interface for accessing your Jellyfin media library on Android devices. Browse and stream your content with smooth playback performance, discover new media through personalized recommendations, and request movies and TV shows directly through Seerr integration.

Reach out

Discord

Connect with us on Discord and be part of the discussion

Features

Category Details
Media Playback - Hardware-accelerated video playback with LibMPV
- Multiple audio and subtitle track support
- Resume functionality across sessions
- Trickplay navigation with thumbnail previews
- Media Segments Support (Intro/Outro Skipper)
Content Discovery - Library browsing by content type
- Search and filtering capabilities
- Favorites management
- Cast and crew information
Seerr Integration - Request movies and TV shows directly from the app
- Browse trending, popular, and upcoming content
- Search integration with request filter
- Track request status (Pending, Approved, Available)
- Approve / Reject incoming requests (admin only)
Interface - Material 3 design with system theming
- Responsive layouts for different screen sizes
- Gesture-based player controls
- Dark and light theme support
Server Integration - Secure authentication
- Playback progress synchronization
- Multiple quality options
- Background library updates

Screenshots

Home Page   Movie Details Page   Show Details Page   Library Page   Favorite Page   Person Detail Page   Player Screen

Stargazers over time

Star History Chart

Installation

GitHub Releases

Download the latest APK from our Releases page

From Source

git clone https://github.com/MakD/AFinity.git
cd AFinity
./gradlew assembleRelease

Setup

  1. Install and launch Afinity
  2. Enter your Jellyfin server address (e.g., http://192.168.1.100:8096)
  3. Sign in with your credentials
  4. Access your media library

For remote access, ensure your Jellyfin server is configured for external connections.

Jellyseerr Setup (Optional)

  1. Open Settings > General
  2. Enable Jellyseerr toggle
  3. Enter your Jellyseerr server URL
  4. Choose authentication method:
    • Jellyfin: Use your Jellyfin credentials
    • Local: Use your Jellyseerr email and password
  5. Tap "Connect"

Once connected, the Requests tab will appear in the bottom navigation.

Technical Details

  • Language: Kotlin
  • UI: Jetpack Compose + Material 3
  • Architecture: MVVM with Repository pattern
  • DI: Hilt
  • Navigation: Navigation Compose
  • Player: LibMPV + ExoPlayer
  • Networking: Retrofit + Jellyfin SDK
  • Images: Coil with BlurHash
  • Storage: Room
  • Tink - Encryption library for secure credential storage
  • Jetpack DataStore - Modern data storage solution

Development

Building

./gradlew build
./gradlew test
./gradlew installDebug

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Roadmap

Core Features

  • Download management for offline viewing
  • Adaptive streaming with quality selection (transcoding support)
  • Chromecast support
  • Enhanced accessibility features
  • Multi-user profile switching
  • Multi-server support

Player Enhancements

  • Picture-in-picture mode
  • Advanced subtitle styling options
  • Audio delay adjustment
  • Playback speed controls

UI/UX Improvements

  • Tablet-optimized layouts
  • Advanced search filters
  • Custom library views
  • Gesture customization

Technical

  • Background sync optimization
  • Cache management
  • Network quality detection
  • Performance monitoring

Acknowledgments

  • Jellyfin - Open source media server
  • MPV - Media player engine
  • libmpv-android by Jarne Demeulemeester - Android MPV integration
  • Seerr - Open-source media request and discovery manager for Jellyfin, Plex, and Emby.

Privacy

Afinity respects your privacy:

  • No tracking or analytics are collected
  • All data stays local or with your own Jellyfin server
  • No third-party services are used without your explicit consent
  • Source code is open for full transparency

Disclaimer

AFinity does not support or condone piracy. The app is only for streaming media you personally own. It includes no media content, and any references or support requests related to piracy or related tools are strictly prohibited.

License

LGPL-3.0 License - see LICENSE for details.


Made with ❤️ for the Jellyfin community

Afinity is not affiliated with Jellyfin. Jellyfin is a trademark of the Jellyfin project.