YouTube is a great resource for learning. Unfortunately, YouTube is also a great resource for distractions. For this project, we’d like you to build an app to help give users a distraction free learning experience with YouTube. You’ll do this by letting users curate their own learning. Users should be able to create ‘Topics’, as well as search for videos to add to those topics. Users will then be able to select a topic and start watching videos right from within your app! Also, make sure the user has a way to see the video description, and don’t forget an option to view the comments!
- Create the application with the ability to search for videos using the YouTube API.
- When the results are returned, allow users to add videos to user-specified topic areas.
- After a topic area is selected, the user should be able to watch those videos from inside the app using the YouTubePlayerView.
- The application needs to utilize Retrofit to consume the YouTube API.
- The application needs to utilize RxJava or LiveData to setup and use an observer pattern.
- A single-activity architecture, using the Navigation Component to manage fragment operations.
- A presentation layer that contains a fragment (View) and a ViewModel per screen (or feature).
- Reactive UIs using LiveData observables and DataBinding.
- A data layer with a repository and two data sources (local using Room and remote using Retrofit ).
- AndroidX
- Data Binding
- Navigation Component
- Room, a SQLite object mapping library.
- Retrofit 2, a type-safe HTTP client for Android and Java.
- OkHttp, an HTTP client for Android, Kotlin, and Java.
- Gson, a Java serialization/deserialization library to convert Java Objects into JSON and back.
- Glide, an image loading and caching library for Android.
- Timber, a logger that provides utility on top of Android's normal Log class.
- Dagger 2, a fast dependency injector for Android and Java.