A family-friendly Android TV streaming app that connects to Plex media servers with advanced profanity filtering capabilities.
- Seamless authentication with Plex accounts via OAuth 2.0
- QR code login support for TV devices
- WebView authentication for mobile devices
- Real-time media library synchronization
- Support for multiple Plex servers
- 4-Tier Profanity Filter System: None, Mild, Moderate, Strict
- Real-time Subtitle Analysis: Automatic profanity detection using OpenSubtitles integration
- Audio Muting: Intelligent audio muting during profanity events
- Custom Filter Lists: Add custom words to filter or whitelist
- Profile-Based Settings: Each user profile maintains individual filter preferences
- Multiple user profiles with unique avatars (13 animal-themed options)
- Child profiles with parental controls
- Per-profile library selection and filter settings
- Profile persistence across sessions
- Leanback launcher support
- D-pad navigation throughout the app
- Focus management for seamless TV navigation
- Grid layouts optimized for large screens
- Virtual keyboard with voice search
- LibVLC integration with hardware acceleration
- 4K HDR Support: Proper color space handling for HDR content
- Filtered subtitle display with timing adjustment
- Real-time profanity detection during playback
- Episode tracking and progress saving for TV shows
- Resume playback support
- Picture-in-Picture mode (mobile)
![]() Home Screen |
![]() Profile Selection |
![]() Movie Details |
![]() TV Show Details |
![]() Search |
![]() Settings |
![]() Profanity Filter Settings |
![]() Profile Statistics |
![]() Level Up Celebration |
![]() Connect to Plex |
![]() Home Screen |
![]() Profile Selection |
![]() Movie Details |
![]() TV Show Details |
![]() Episode Details |
![]() Search |
![]() Settings |
![]() Profanity Filter |
![]() Profile Statistics |
![]() Level Up |
![]() Connect to Plex |
- Minimum SDK: Android 9 (API 28)
- Target SDK: Android 15 (API 35)
- Device Type: Android TV or Android Mobile
- Plex Account: Required for media streaming
- Clone the repository:
git clone https://github.com/yourusername/PureStream.git
cd PureStream-
Open the project in Android Studio
-
Sync Gradle dependencies
-
Build the APK:
# Windows
.\gradlew.bat assembleDebug
# macOS/Linux
./gradlew assembleDebug- Install on device:
# Windows
.\gradlew.bat installDebug
# macOS/Linux
./gradlew installDebug- Language: Kotlin 1.9.24
- UI Framework: Jetpack Compose
- Navigation: Jetpack Navigation Compose
- Architecture: MVVM (Model-View-ViewModel)
- Android TV: Leanback, TV Material3
- Networking: Retrofit, OkHttp
- Database: Room
- Media Playback: LibVLC 3.6.5 (4K HDR support)
- Image Loading: Coil
- Dependency Injection: Manual (ViewModels with Repositories)
- Coroutines: Kotlin Coroutines with Flow
- Background Tasks: WorkManager
- Plex API: Media server integration
- OpenSubtitles API: Subtitle fetching and analysis
- Plex OAuth: Secure authentication
UI Layer (Compose)
โ
ViewModels (StateFlow)
โ
Repositories
โ
Data Sources (API Services, Room Database)
- MainActivity.kt: Single-activity architecture with Compose NavHost
- Repositories: PlexRepository, ProfileRepository, OpenSubtitlesRepository
- ViewModels: HomeViewModel, MoviesViewModel, TvShowsViewModel, MediaPlayerViewModel
- Database: Room database with 3 entities (Profile, SubtitleAnalysis, AppSettings)
- Profanity Filter: Multi-tier filtering system with custom word lists
com.purestream/
โโโ data/
โ โโโ api/ # Retrofit API services
โ โโโ database/ # Room database, DAOs, entities
โ โโโ manager/ # Business logic managers
โ โโโ model/ # Data models
โ โโโ repository/ # Repository pattern implementations
โโโ profanity/ # Profanity filtering system
โ โโโ ProfanityFilter.kt
โ โโโ SubtitleAnalyzer.kt
โ โโโ FilteredSubtitleManager.kt
โโโ ui/
โ โโโ components/ # Reusable UI components
โ โโโ screens/ # Screen composables
โ โโโ theme/ # App theming
โ โโโ viewmodel/ # ViewModels
โโโ utils/ # Utility classes
The app uses Plex OAuth 2.0 with the following identifiers:
- Client ID:
f7f96c82-17e5-4b11-a52f-74b1107bd0fb - Product Name:
Pure Stream - Platform:
Android TV
- Compile SDK: 35
- Min SDK: 28
- Java Compatibility: 1.8
- Kotlin Compiler: 1.5.14
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Plex for their media server platform and API
- OpenSubtitles for subtitle data
- Android Jetpack team for excellent libraries and tools
For issues, questions, or feature requests, please open an issue.
Note: This app requires a Plex Media Server and valid Plex account to function. Pure Stream is not affiliated with or endorsed by Plex Inc.




















