Skip to content

andrefpc/TvMazeClient

Repository files navigation

TvMazeClient

Welcome

Tv Maze Client is a comprehensive app designed to search for and provide detailed information about TV series.

Originally, this app utilized XML for view creation and Koin for dependency injection. To enhance and modernize the app, I have recreated the views using Jetpack Compose and switched the dependency injection framework to Hilt. Rather than replacing the original implementation, I have maintained both versions, allowing users to choose and evaluate their preferred approach.

Setup

The app supports Light and Dark mode.

Software Setup

Target SDK

API Reference

Language

  • Kotlin

Architecture

  • MVVM (Model View ViewModel)
  • Clean Code

UI Components

  • XML
  • Jetpack Compose

Dependency Injection

  • Koin (For XML-Based Path)
  • Hilt (For Jetpack Compose Path)

Multithreading

Observables

HTTP Client

Database

Remote Images Load

  • Glide (For XML-Based Path)
  • Coil (For Jetpack Compose Path)

Shimmer Loading

Other Tools

Packages Structure

  • 📔 data (Store data objects)
    • 📔 exception (Store the exceptions created to handle errors)
    • 📔 local (Store the classes to setup and access the Room database)
    • 📔 remote (Store the api interfaces and dto objects)
    • 📔 repository (Store the repositories implementations)
  • 📔 di (Store the dependecy injection setup files)
  • 📔 domain (Store repositories, use cases and business logics)
    • 📔 model (Store the domain models)
    • 📔 repository (Store the repositories interfaces)
    • 📔 use_case (Store the use case classes that will handle business logics)
  • 📔 presentation (Store the classes responsible to present screens )
    • 📔 compose (Store the UI files for the Jetpack Compose perspective of the app)
      • 📔 navigation (Store the classes that will handle navigation)
      • 📔 screen (Store the Views, Activities and viewModels)
      • 📔 theme (Store the files that will handle theming)
      • 📔 widget (Store the custom widgets)
  • 📔 xml_bases (Store the UI files for the XML-based perspective of the app)
    • 📔 navigation (Store the classes that will handle navigation)
    • 📔 screen (Store the Fragments, Activities and viewModels)
    • 📔 widget (Store the custom widgets)
  • 📔 util (Store extensions and util classes)

Unit Tests

111 Unit Tests were created for this application and they are separated into repository tests, use case tests, and view model tests.

Tests Packages Structure

  • 📔 repository (Store Repository tests)
  • 📔 use_case (Store Use Case tests)
  • 📔 util (Store Mocks to be used in the tests)
  • 📔 view_model (Store ViewModel tests)
Screenshot 2024-06-29 at 17 15 28

Instrumented Tests

33 Instrumented Tests were created for this application.

Screenshot 2024-07-23 at 19 33 00

Requirements

  • ✅ 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
  • ✅ 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.
  • ✅ Create Unit Tests

All requirements have been made in the app

Screenshots

Screenshot_20220719-135039_TV Maze Client Screenshot_20220719-135111_TV Maze Client Screenshot_20220719-135124_TV Maze Client Screenshot_20220719-135150_TV Maze Client Screenshot_20220719-135206_TV Maze Client Screenshot_20220719-135218_TV Maze Client Screenshot_20220719-135231_TV Maze Client Screenshot_20220719-135243_TV Maze Client Screenshot_20220719-135313_TV Maze Client

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages