Android TV App powered by TMDb
It is a easy way to find the best TV content, the top movies, tv shows and more, all of that in your TV. The goal of the project is to be a guide line about Android TV, showcasing modern Android TV development using Jetpack Compose for TV. The project also uses the popular libraries and tools from the Android ecosystem with a focus on declarative UI and reactive programming.
Screen_recording_20251127_205508.mp4
- 100% Kotlin
- Android TV with Jetpack Compose for TV
- MVI Architecture Pattern
- Clean Architecture
- Android Architecture Components
- Dependency Injection with Koin
- Reactive Programming with Kotlin Coroutines and Flow
This project uses the popular libraries and tools from the Android ecosystem.
- Tech-stack
- Kotlin
- Android TV
- Jetpack Compose for TV declarative UI framework
- Recommend TV content
- Android Architecture Components
- ROOM local data storage
- Lifecycle-aware components
- ViewModel UI state management
- Retrofit networking
- Kotlin Coroutines asynchronous programming
- Kotlin Flow reactive streams
- Coil image loading library for Compose
- Lottie animation library
- Koin dependency injection framework (see documentation)
- Architecture
- Tests
- Gradle
BESTV uses the version 3 of The Movie Database (TMDb) API. You can find all the documentation about the requests and the responses responses there.
BESTV uses The Movie DB API in order to fetch all the data, but is not endorsed or certified by TMDb.
To be able to run this application you have to create an API KEY from The Movie DB and place it in your gradle file.
buildConfigField "String", "TMDB_API_KEY", "YOUR API KEY HERE"
- Show the top movies and tv shows
- Show the top movies and tv shows by genre
- Details about a work including the casts, the videos, the similar and recommended works
- Details about a cast including the credits
- Search the movies and the tv shows by title
- ✅ Migrated from Leanback library to Jetpack Compose for TV
- ✅ Adopted MVI (Model-View-Intent) architecture pattern
- ✅ Replaced RxJava/RxAndroid with Kotlin Coroutines and Flow
- ✅ Updated UI layer to use declarative Compose components
- ✅ Migrated from Dagger to Koin for dependency injection
The app is modularized. We can see the dependency graph with all the modules.
- Jetpack Compose for TV
- Compose for TV samples
- Google Codelab TV Recommendations
- MVI Architecture with Kotlin
- Koin - The Kotlin Injection Framework
- Why you need Use Cases/Interactors
- Modularization - Lessons learned
- Gradle dependency management with Kotlin (buildSrc)
- Kotlin Coroutines and Flow
Copyright (c) 2018 Marcus Pimenta
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
