TV Showcase
A TV Showcase ? Android App using Jetpack libraries and MVVM architecture. Data provided by TVMaze API.
Release ?
Tech Stack ?
- Minimum SDK API level: 21
- Kotlin – Official programming language for Android development.
- Dagger Hilt – Dependency Injection library for Android
- Coroutines – For asynchronous stuff and more.
- Flow – A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- LiveData – Data objects that notify views when the underlying database changes.
- ViewModel – Manages UI data and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
- ViewBinding – Bind UI components from layouts to data sources in app using a declarative format rather than programmatically.
- Retrofit – A type-safe HTTP client for Android.
- Room – SQLite object mapping library.
- Moshi – A modern JSON library for Kotlin and Java.
- Moshi Converter – A Converter which uses Moshi for serialization to and from JSON.
- Navigation – A library that helps navigation between fragments
- Coil-kt – An image loading library for Android backed by Kotlin Coroutines.
- Gradle Kotlin DSL – For writing Gradle build scripts using Kotlin.
- Ktlint ? – Kotlin linter
- JUnit, Mockito and Mockk for unit tests
Features
- List all of the series contained in the API used by the paging scheme provided by the API.
- Allow users to search series by name.
- The listing and search views must show at least the name and poster image of the series.
- After clicking on a series, the application should show the details of the series, showing the following information:
- Name
- Poster
- Days and time during which the series airs
- Genres
- Summary
- List of episodes separated by season
- After clicking on an episode, the application should show the episode’s information, including:
- Name
- Number
- Season
- Summary
- Image, if there is one
Optional Features
- Allow the user to set a PIN number to secure the application and prevent unauthorized users.
- For supported phones, the user must be able to choose if they want to enable fingerprint authentication to avoid typing the PIN number while opening the app.
- Allow the user to save a series as a favorite.
- Allow the user to delete a series from the favorites list.
- Allow the user to browse their favorite series in alphabetical order, and click on one to see its details.
- Create a people search by listing the name and image of the person.
- After clicking on a person, the application should show the details of that person, such as:
- Name
- Image
- Series they have participated in, with a link to the series details.
Bonus
- Test coverage on Data module
- Test coverage on Domain module
- Episodes schedule of the day
- Show rating
- Shortcuts to home, schedule and favorites
- Adaptive icon
- Day/Night theme for API level 29+
- Support to PT language
- Search by voice