A personal sandbox Android TV app for exploring Android TV development with Jetpack Compose and Apollo GraphQL. Built to get hands-on experience with both technologies in a real app context.
LearnOnTV is a language-learning quiz app designed for TV screens.
Home — Displays a horizontal row of task group cards (e.g. "English Vocabulary", "Spanish Basics"). Cards with available content are tappable; empty placeholder cards show a "Coming soon" toast.
Task session — A sequential fill-in-the-missing-word quiz. Each task shows a sentence with a blank and four answer buttons. Answer buttons turn green (correct) or red (wrong), with the correct answer highlighted after a wrong pick. A Next/Finish button animates in after each answer.
| Language | Kotlin 2.1 |
| UI | Jetpack Compose + Material 3 |
| GraphQL | Apollo GraphQL 4.4 |
| Async | Kotlin Coroutines + viewModelScope |
| Min SDK | 30 (Android TV) |
| Target SDK | 35 |
- Android Studio Meerkat (2025.1) or newer
- Android SDK with API 30+ installed
- An Android TV emulator (e.g. ADT-3 system image) or a physical Android TV device
- Clone the repo and open the root folder in Android Studio.
- Let Gradle sync complete — it will download dependencies and run Apollo code generation automatically.
- Create or verify
local.propertiesin the project root contains the path to your Android SDK:Android Studio creates this file automatically on first open.sdk.dir=/path/to/your/Android/Sdk - Select or create an Android TV AVD in the Device Manager (any API 30+ TV image works).
- Run the app configuration (
Run > Run 'app'or Shift+F10).
The app uses mock data, so no network connection or backend is required.
This project was created to experiment with:
- Building a TV-native UI in Jetpack Compose with D-pad focus management and animated focus states
- Integrating Apollo GraphQL in an Android app — schema design, code generation, query execution, and mocking with
MapTestNetworkTransport