Skip to content

mobile-pablo/Youtube

Repository files navigation

Youtube

TV - oriented Clone of Youtube with their API

🧪 60 - 30 - 10 design

Light mode Dark mode

🪚 Status

Progress

App have features : 
    * Trending Videos
    * Search with Query history

App works perfectly but There is one issue (not on my side).
Youtube API doesnt support any views only iframe which is not so much supported by Android TV.
I can like open video and play it but not so much add my own features like comment or like.
That cuts many of future features that I would implement.
Only few external like share and title with redirrection to Youtube App.
I have decided to cut external app opening but I wont  be able to remove Share button.

Iframe issue I was regarding to

Test coverage 🎯​ Percentage

 Almost all classes are covered (1.0.0 status)
 Excluding generated files, mappers and models etc.

📱 How to run

  1. Install Android Studio according to tutorial

  2. Download necessary SDK tools

  3. Configure Android emulator or connect external device

  4. Clone repository from button ' <> Code '

  5. Remove ' include(":playground") ' from settings.gradle.kts

    • I added Playground module ( as ignored ) for experimental libraries to test out.
  6. Recreate NetworkConst.kt file with Your API key

    package com.mobile.pablo.networking.const
    
    object NetworkConst {
    const val YOUTUBE_KEY = "Get key from https://developers.google.com/youtube/v3/getting-started"
    }
    
  7. Sync project with Gradle

  8. Click an build button : )

⚙️ Config

Config files based on Kotlin DSL.
Dependencies in TOML file
They are updated via plugin version-catalog-update-plugin
To update run a command

 ./gradlew versionCatalogUpdate

I added also a Kover for Unit test Coverage
To check coverage run :
./gradlew koverVerifyDebug koverXmlReportDebug

To fix lint issues run :
./gradlew ktLintFormat

🤔​ Planning

Jira at Youtube Jira
Qase at Youtube Qase

🛠️​ Tech stack

📸 Screenshots

CI/CD

CI (primary)
CD (staging)
CD (deploy)



Config

Firebase App Distribution
Jira
Crashlytics
Qase (to be improved)
Kover - Unit tests coverage

🙊​ Google Play - Status

App new releases only will be internal for Youtube Privacy Law.
Non less it still uses CD - Deploy workflow only not for production

​🔗​ To be added (1.0.1)

  • Add Playlists
  • Add Settings
  • Add Profile Screen

🫧​ Design

I implemented and used 60 - 30 - 10 rule for this design


Implementation based on Youtube TV Design