Skip to content

Android app for real-time updates on latest movie releases 🎥. Performs API calls, paging for seamless data loading, and local caching for images and essential information.

Notifications You must be signed in to change notification settings

JorgeDiazz/TheMovie

Repository files navigation

Overview: TheMovie (Android app)

Welcome to TheMovie, an Android application that consumes The Movie Database to retrieve up-to-date information about movies, enabling an exploration of the cinematic world.

What's included

An Android app with modular architecture, clean architecture, SOLID principles and MVVM.

app_architectural_pattern

Furthermore, some libraries and frameworks such as:

  • Splash screen api and container HomeActivity.
  • Network connectivity interceptor for HTTP requests.
  • Hilt for dependencies injection.
  • Room for local storage.
  • Navigation Component as app navigation framework.
  • Coil for loading and caching images.
  • Retrofit2 for API requests.
  • Paging3 for local & remote data pagination.
  • PagingSource for pagination orchestration.
  • Coroutines and Flow for Reactive Functional Programming.
  • StateFlow and SharedFlow for observing and updating data.
  • ViewBinding for activities and fragments.
  • Timber for debug logging purposes.
  • Android Studio EditorConfig file to maintain consistent coding styles.
  • Gradle’s Kotlin DSL.
  • ktlint for static code analysis.
  • LeakCanary for memory leaks detection.
  • jUnit, MockK and Turbine for unit testing.
  • dokka for Kotlin's documentation generation.

Installation

Clone this repository and import it into Android Studio

git clone https://github.com/JorgeDiazz/android-rappipay-tech-test.git

Build variants

Herein you can find multiple targets that the app takes into account:

Staging Production
Internal Debug Debug
External Release Release

Where the following formed variants are built for staging purposes:

  • stagingInternalDebug
  • stagingInternalRelease

And these ones for production purposes:

  • productionInternalDebug
  • productionInternalRelease
  • productionExternalDebug
  • productionExternalRelease

Sidenote: choose productionExternalDebug before executing the app

Using the app

Launching the app

Upcoming movies supporting pagination

Top rated movies supporting pagination

Suggested movies recycler view uses top rated cached movies to get updates in real-time

Filters are populated in real-time as per current top rated cached movies

Selecting several filters

Movie Details Screen

Watching Movie's trailer

Launching the app using airplane mode (offline mode)

Retrying movies fetching when Internet connection recovered

Movie Details Screen (offline mode)

Persisting screen state (selected filters) in landscape mode

Movie Details Screen in landscape mode

Others

  1. Project's CodeStyle can be found here.
  2. Project utilities file can be found here.

About

Android app for real-time updates on latest movie releases 🎥. Performs API calls, paging for seamless data loading, and local caching for images and essential information.

Topics

Resources

Stars

Watchers

Forks

Languages