Skip to content

Dinesh2510/ComposeLab-ComposeTV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

38 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“บ Compose Lab - Compose TV

A modern Android TV application built entirely with Jetpack Compose for TV

Kotlin Compose TV Android License Stars

A complete, production-style Android TV app demo โ€” built with Jetpack Compose for TV, Hilt, Room, Paging 3, Ktor & Retrofit โ€” showcasing real-world architecture patterns for TV app development.

๐Ÿ“ฅ Download APK โ€ข ๐ŸŽฅ Watch Demo โ€ข โœจ Features โ€ข ๐Ÿ—๏ธ Tech Stack โ€ข ๐Ÿš€ Setup


๐Ÿ“– About

Compose Lab - Compose TV is an open-source Android TV application built from scratch using Jetpack Compose for TV (Compose TV) โ€” Google's modern declarative UI toolkit for building television experiences. This project demonstrates how to build a fully functional, streaming-style TV app with a clean MVVM + Clean Architecture approach, D-pad friendly navigation, lazy-loaded content rows, video playback, and offline-first data handling.

It's designed as both a learning resource for developers exploring Compose for TV and a starter template / boilerplate for building your own Android TV apps.

โญ If you find this project useful, please consider giving it a star โ€” it helps others discover it too!


โœจ Features

  • ๐ŸŽฌ Splash screen with onboarding flow for first-time users
  • ๐Ÿ  TV-optimized Home dashboard with lazy content rows & carousels
  • ๐Ÿ” Dedicated Search screen with D-pad friendly focus handling
  • ๐Ÿ“„ Home/Content details screen with rich metadata
  • โ–ถ๏ธ Built-in Media Player screen for video playback
  • โค๏ธ Wishlist / Favorites to save content for later
  • โš™๏ธ Settings screen for app preferences
  • ๐Ÿ“œ Privacy Policy & Terms and Conditions screens
  • ๐ŸŽฎ Full remote-control (D-pad) navigation support
  • ๐ŸŒ™ Modern Material 3 for TV design system
  • ๐Ÿงฉ Modular, scalable Clean Architecture (MVVM + Repository pattern)
  • ๐Ÿ’‰ Dependency Injection with Hilt
  • ๐Ÿ’พ Offline caching using Room + DataStore
  • ๐Ÿ“ก Network layer built with Ktor & Retrofit
  • ๐Ÿ–ผ๏ธ Image loading & caching with Coil

๐Ÿ“ฑ Screens

Splash Screen Home Home Details
Search Search Result Wishlist
Privacy Policy / Terms Settings Media

๐ŸŽฅ Video Demo

Watch the demo on YouTube

โ–ถ๏ธ Watch full demo on YouTube


๐Ÿ—๏ธ Tech Stack

Language & UI

Category Library Version
Language Kotlin 2.3.20
UI Toolkit Jetpack Compose BOM 2026.06.01
TV UI Compose TV Foundation 1.0.0
TV UI Compose TV Material 1.1.0
Icons Material Icons Extended 1.7.8
Core AndroidX Core KTX 1.18.0
Compat AndroidX AppCompat 1.7.1
Activity Activity Compose 1.13.0

Architecture Components

Category Library Version
Lifecycle Lifecycle Runtime Compose 2.11.0
Lifecycle Lifecycle Runtime KTX 2.11.0
Navigation Navigation Compose 2.9.8
DI Hilt 2.59.2
DI Hilt Navigation Compose 1.3.0

Data & Storage

Category Library Version
Database Room 2.8.4
Paging Paging 3 3.5.0
Preferences DataStore 1.2.1

Networking

Category Library Version
HTTP Client Ktor 3.5.1
HTTP Client Retrofit 3.0.0
Logging OkHttp Logging Interceptor 5.4.0
Serialization Kotlinx Serialization 1.11.0

Image Loading & Build Tools

Category Library Version
Image Loading Coil 2.7.0
Build Plugin Android Gradle Plugin (AGP) 9.0.1
Annotation Processing KSP 2.0.21-1.0.28

๐ŸŒ Data Source / API

This app fetches sample TV/video content from Google's public Android TV sample content feed:

https://storage.googleapis.com/androiddevelopers/samples_assets/android-tv/android_tv_videos_new.json

This is a publicly hosted sample JSON feed (used in Google's own Android TV sample apps) containing categorized video metadata โ€” titles, descriptions, thumbnails, and playable media URLs โ€” which this app parses and renders as content rows.

โš ๏ธ This content is provided by Google for demo/sample purposes only. This project does not own, host, or claim rights to any of the media referenced by this feed โ€” it is used strictly for educational and demonstration purposes.


๐Ÿ—‚๏ธ App Screens & Navigation

The app uses a single-activity architecture with Navigation Compose, structured as:

object Splash : Screen("splash")
object Onboarding : Screen("onboarding")

// Main Wrapper
object Dashboard : Screen("dashboard")

object HomeDetails : Screen("homedetails")
object MediaPlayerScreen : Screen("media_player")

// Drawer Items
object Search : Screen("search", "Search", Icons.Default.Search)
object Home : Screen("home", "Home", Icons.Default.Home)
object Favorite : Screen("wishlist", "Wishlist", Icons.Default.Bookmark)
object PrivacyPolicy : Screen("pvpc", "Privacy Policy", Icons.Default.Security)
object Terms : Screen("tnc", "Terms & Condition", Icons.Default.Description)
object Settings : Screen("settings", "Settings", Icons.Default.Settings)

๐Ÿ›๏ธ Architecture

This project follows MVVM (Model-View-ViewModel) combined with Clean Architecture principles:

app/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ local/          โ†’ Room database, DataStore
โ”‚   โ”œโ”€โ”€ remote/         โ†’ Ktor / Retrofit API services, DTOs
โ”‚   โ””โ”€โ”€ repository/     โ†’ Repository implementations
โ”œโ”€โ”€ domain/
โ”‚   โ”œโ”€โ”€ model/          โ†’ Domain models
โ”‚   โ”œโ”€โ”€ repository/     โ†’ Repository interfaces
โ”‚   โ””โ”€โ”€ usecase/        โ†’ Business logic / use cases
โ”œโ”€โ”€ di/                 โ†’ Hilt modules
โ”œโ”€โ”€ ui/
โ”‚   โ”œโ”€โ”€ screens/        โ†’ Splash, Onboarding, Dashboard, Home, Search, etc.
โ”‚   โ”œโ”€โ”€ components/     โ†’ Reusable Compose TV components
โ”‚   โ”œโ”€โ”€ navigation/      โ†’ NavHost & Screen routes
โ”‚   โ””โ”€โ”€ theme/           โ†’ TV Material theme
โ””โ”€โ”€ MainActivity.kt

๐Ÿš€ Getting Started

Prerequisites

  • Android Studio (latest stable version, Ladybug or newer)
  • JDK 17+
  • Android TV device or Android TV Emulator

Installation

# Clone the repository
git clone https://github.com/Dinesh2510/compose-lab-tv.git

# Open in Android Studio
cd compose-lab-tv

# Sync Gradle and Run on an Android TV emulator/device

๐Ÿ“ฅ Download

You can download the latest APK from the Releases section.


๐Ÿค Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Feel free to check the issues page.


๐Ÿ“„ License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


โš ๏ธ Disclaimer

This project is created strictly for educational and portfolio purposes to demonstrate Jetpack Compose for TV development. It does not host, store, or own any media content. All content is fetched from third-party public sample APIs and belongs to their respective owners.


๐Ÿ‘ค Author

Your Name


๐Ÿ’– Show your support

Give a โญ๏ธ if this project helped you or inspired your own Android TV app!

Releases

No releases published

Packages

 
 
 

Contributors

Languages