{"id":18456387,"url":"https://github.com/nicosnicolaou16/sampleandroidtvapp","last_synced_at":"2025-04-08T04:34:48.944Z","repository":{"id":205630326,"uuid":"713784974","full_name":"NicosNicolaou16/SampleAndroidTvApp","owner":"NicosNicolaou16","description":"The project is a test implementation that uses Jetpack Compose for an Android TV OS app. It includes API requests to fetch a dynamic list, integrates Hilt for Dependency Injection, and utilizes Room Database for local data storage.","archived":false,"fork":false,"pushed_at":"2025-01-05T00:22:52.000Z","size":2048,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T06:41:22.781Z","etag":null,"topics":["android-application","android-tv","android-tv-app","compose-android","jetpack-compose","mvvm","repository-pattern","room-database"],"latest_commit_sha":null,"homepage":"https://medium.com/@nicosnicolaou/android-tv-application-jetpack-compose-and-flutter-f4decfa765c6","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NicosNicolaou16.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-03T08:26:23.000Z","updated_at":"2025-01-05T00:22:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"f47dc601-0dd3-4a85-b0c7-b61eb4211b35","html_url":"https://github.com/NicosNicolaou16/SampleAndroidTvApp","commit_stats":null,"previous_names":["nicosnicolaou16/sampleandroidtvapp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicosNicolaou16%2FSampleAndroidTvApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicosNicolaou16%2FSampleAndroidTvApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicosNicolaou16%2FSampleAndroidTvApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicosNicolaou16%2FSampleAndroidTvApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NicosNicolaou16","download_url":"https://codeload.github.com/NicosNicolaou16/SampleAndroidTvApp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779796,"owners_count":20994569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-application","android-tv","android-tv-app","compose-android","jetpack-compose","mvvm","repository-pattern","room-database"],"created_at":"2024-11-06T08:11:22.327Z","updated_at":"2025-04-08T04:34:48.938Z","avatar_url":"https://github.com/NicosNicolaou16.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sample Android TV App\n\nThe project is a test implementation that uses Jetpack Compose for an Android TV OS app. It includes\nAPI requests to fetch a dynamic list, integrates Hilt for Dependency Injection, and utilizes Room\nDatabase for local data storage.\n\n\u003ca title=\"simulator_image\"\u003e\u003cimg src=\"Screenshot_20231119_124940.png\" height=\"300\" width=\"500\"\u003e\u003c/a\u003e\n\n# The Project Contain the following technologies\n\n[Android TV OS]()https://developer.android.com/tv is a version of Android designed for smart TVs,\nproviding an optimized interface for streaming and apps. \u003cbr /\u003e\nThe programming language is the [Kotlin](https://kotlinlang.org/docs/getting-started.html), it is a\nmodern, JVM-based programming language that is concise, safe, and interoperable with Java. \u003cbr /\u003e\n[Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) is used for asynchronous\ntasks. \u003cbr /\u003e\n[Kotlin KTX](https://developer.android.com/kotlin/ktx) is a collection of Kotlin extensions that\noffer more concise and expressive code for working with Android APIs and libraries.\nThe UI is build using [Jetpack Compose](https://developer.android.com/develop/ui/compose). \u003cbr /\u003e\n[Retrofit](https://square.github.io/retrofit/) is responsible for making requests and retrieving\ndata from the remote server. ([Repository](https://github.com/square/retrofit)) \u003cbr /\u003e\n[Hilt Dependencies Injection](https://developer.android.com/training/dependency-injection/hilt-android)\nis an Android library that simplifies dependency injection by using annotations to automatically\nmanage and provide dependencies across components, built on top of\nDagger. ([Documentation](https://dagger.dev/hilt/)) \u003cbr /\u003e\n[Room Database](https://developer.android.com/training/data-storage/room) is responsible for saving\nthe retrieved data from the remote server, querying data from the local database, and supporting\noffline functionality.  \u003cbr /\u003e\n[MVVM](https://developer.android.com/topic/architecture#recommended-app-arch) with repository is an\narchitecture where the Repository manages data sources (e.g., network, database), the ViewModel\nprocesses the data for the UI, and the View displays the UI, ensuring a clear separation of\nconcerns. \u003cbr /\u003e\n[KSP](https://developer.android.com/build/migrate-to-ksp) (\"Kotlin Symbol Processing\") is a tool for\nefficient annotation processing in Kotlin, providing faster code generation and symbol manipulation\ncompared to KAPT. [Repository](https://github.com/google/ksp) \u003cbr /\u003e\n[R8](https://developer.android.com/build/shrink-code) enabled, is a code shrinker and obfuscator for\nAndroid that optimizes and reduces the size of APKs by removing unused code and resources, while\nalso obfuscating the remaining code to improve security. \u003cbr /\u003e\n\n# Setup\n\n## Setup in Manifest\n\n```xml\n\n\u003cmanifest\u003e\n\n    \u003cuses-feature android:name=\"android.software.leanback\" android:required=\"false\" /\u003e\n\n    \u003cuses-feature android:name=\"android.hardware.touchscreen\" android:required=\"false\" /\u003e\n\n    \u003capplication android:banner=\"@mipmap/ic_launcher\"\u003e\n        \u003c!--other code here--\u003e\n        \u003cactivity\u003e\n            \u003c!--other code here--\u003e\n            \u003cintent-filter\u003e\n                \u003caction android:name=\"android.intent.action.MAIN\" /\u003e\n\n                \u003ccategory android:name=\"android.intent.category.LAUNCHER\" /\u003e\n                \u003ccategory android:name=\"android.intent.category.LEANBACK_LAUNCHER\" /\u003e\n            \u003c/intent-filter\u003e\n        \u003c/activity\u003e\n        \u003c!--other code here--\u003e\n    \u003c/application\u003e\n\u003c/manifest\u003e\n```\n\n\u003e [!IMPORTANT]  \n\u003e Check my article for the setup :point_right: [Android TV Application (Setup for Jetpack Compose and Flutter)- Medium](https://medium.com/@nicosnicolaou/android-tv-application-jetpack-compose-and-flutter-f4decfa765c6) :point_left: \u003cbr /\u003e\n\n\u003e [!IMPORTANT]\n\u003e Similar project with (Dart Language) :point_right: [SampleFlutterTVApp](https://github.com/NicosNicolaou16/SampleFlutterTVApp) :point_left: \u003cbr /\u003e\n\n#Versioning\n\nTarget SDK version: 35 \u003cbr /\u003e\nMinimum SDK version: 28 \u003cbr /\u003e\nKotlin version: 2.1.0 \u003cbr /\u003e\nGradle version: 8.7.3 \u003cbr /\u003e\n\n# Feeds/Urls/End Point (parsing some data from response)\n\n## (Links References for Ends Points)\n\nhttps://github.com/r-spacex/SpaceX-API (GitHub) \u003cbr /\u003e\nhttps://docs.spacexdata.com/?version=latest (Postman) \u003cbr /\u003e\n\n# References/Tutorials Follow/For Manifest Setup\n\nhttps://developer.android.com/training/tv/playback/compose \u003cbr /\u003e\nhttps://developer.android.com/jetpack/compose/touch-input/focus/react-to-focus \u003cbr /\u003e\nhttps://stackoverflow.com/questions/76281554/android-jetpack-compose-tv-focus-restoring \u003cbr /\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicosnicolaou16%2Fsampleandroidtvapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicosnicolaou16%2Fsampleandroidtvapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicosnicolaou16%2Fsampleandroidtvapp/lists"}