Upnext is a modern Android application for tracking TV series, built with industry-standard best practices and cutting-edge libraries. It serves as a reference implementation for a scalable, production-ready Android app in 2026.
- 100% Jetpack Compose: Fully modern UI built with Material 3.
- Adaptive Layouts: Optimized for phones, tablets, and foldables using Window Size Classes.
- Offline First: Robust offline support with Room and WorkManager sync.
- Trakt Integration: Seamlessly syncs with Trakt.tv for tracking episodes and history.
- Modern Architecture: Clean Architecture, MVVM, and Dependency Injection with Hilt.
This project leverages the latest Android development tools and libraries:
- Language: Kotlin 2.1
- UI: Jetpack Compose (Material 3)
- Dependency Injection: Hilt
- Async: Coroutines & Flow
- Network: Retrofit & OkHttp
- Local Storage: Room & DataStore
- Image Loading: Coil & Glide
- Background Work: WorkManager
- Build System: Gradle with Version Catalogs (
libs.versions.toml)
The app follows Clean Architecture principles with a logical separation of concerns:
- UI Layer: Jetpack Compose screens and ViewModels.
- Domain Layer: Use Cases / Interactors (Logical business rules).
- Data Layer: Repositories, Data Sources (Local/Remote), and API definitions.
Although currently structured as a monolithic app module for simplicity, the logical boundaries are strictly enforced to facilitate future modularization.
- Android Studio: Ladybug or newer.
- JDK: Java 17 (Ensure Gradle is using JDK 17 in simple Settings).
To run the app, you need a Trakt.tv API key.
- Register an application at Trakt.tv.
- Set the Redirect URI to:
theupnextapp://callback - Create a
local.propertiesfile in the project root (do NOT commit this file). - Add your keys:
TraktClientID="YOUR_CLIENT_ID"
TraktClientSecret="YOUR_CLIENT_SECRET"
TraktRedirectURI="theupnextapp://callback"We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to propose bug fixes and new features.
This project is licensed under the MIT License - see the LICENSE file for details.