mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
f7f9fc10588a69aa5c43d200050acdc00d566ff2
Move playback-related media state into shared model types and make the player consume a single PlayableMedia object instead of separately loading MediaItems, track preferences, resume positions, and media segments. This updates PlayableMediaRepository to return playable media bundles, seeds the player playlist with the current item, keeps next-up entries in the same model, restores resume/segment handling, and fixes current queue highlighting. The change also moves track preference models into core-model, centralizes Jellyfin BaseItemDto conversion, removes placeholder movie audio/subtitle fields, bumps the offline Room schema, and updates mobile/TV queue UI code for the playlist model. Verification: ./gradlew --no-daemon :core-model:compileDebugKotlin :core:compileDebugKotlin :data:compileDebugKotlin :app:compileDebugKotlin
Purefin
An open-source Jellyfin client for Android and Android TV, built with modern Android development practices.
Features
- Video Playback & Queue Management - Smooth playback experience with queue management powered by Media3/ExoPlayer
- Continue Watching - Resume your content right where you left off
- User Authentication - Secure login and user account management
- Rich Media Presentation - Beautiful artwork and thumbnails for your media library
- Smart Downloads - Download your favorite content for offline viewing
- Centralized Subtitles Management - Advanced subtitle handling with Jellyfin plugin integration
Screenshots
Coming soon
Tech Stack
- Language: Kotlin
- UI Framework: Jetpack Compose
- Media Playback: Media3 (ExoPlayer)
- Networking: Jellyfin Core SDK, OkHttp
- Dependency Injection: Hilt
- Local Storage: Room Database, DataStore
- Image Loading: Coil
- Navigation: AndroidX Navigation 3
- Serialization: Kotlin Serialization
Requirements
- Android 10 (API 29) or higher
- Android Studio Ladybug or newer
- JDK 11 or higher
- A Jellyfin server instance
Installation
Building from Source
- Clone the repository:
git clone https://github.com/yourusername/purefin.git
cd purefin
-
Open the project in Android Studio
-
Sync the project with Gradle files
-
Build and run the app:
- For Android devices: Select your device/emulator and click Run
- For Android TV: Select an Android TV emulator or device
Download APK
Release builds coming soon
Usage
- Launch Purefin on your Android device or Android TV
- Enter your Jellyfin server URL
- Log in with your Jellyfin credentials
- Browse and enjoy your media library
Configuration
Connect to your Jellyfin server by providing:
- Server URL (e.g.,
http://192.168.1.100:8096orhttps://jellyfin.example.com) - Username
- Password
Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Contribution Guidelines
- Follow Kotlin coding conventions
- Use Jetpack Compose for UI components
- Write meaningful commit messages
- Update documentation as needed
Roadmap
- Enhanced subtitle customization
- Chromecast support
- Picture-in-Picture mode
- Live TV support
- Offline library sync
- Multi-user profiles
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Jellyfin - The free software media system
- All contributors who help make Purefin better
Support
If you encounter any issues or have questions:
- Open an issue
- Check existing issues for solutions
Disclaimer
This is an unofficial Jellyfin client and is not affiliated with or endorsed by the Jellyfin project.
Languages
Kotlin
100%