TV Showcase

A TV Showcase ? Android App using Jetpack libraries and MVVM architecture. Data provided by TVMaze API.

Release ?

  • Download here
  • See how the app looks like ? here

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

GitHub

View Github