Skip to content

Mustafashahoud/MoviesApp

Repository files navigation

MovieGuide

  • A Movie Application uses TheMovie API based on Kotlin MVVM architecture and material design.
  • A single-activity pattern, using the Navigation component to manage fragment operations.
  • Reactive UIs using LiveData observables and Data Binding.
  • Handles background tasks using Executors for the master branch, coroutines + Flow for the 2nd and 3th branch and RxJava for 4th branch.
  • It consists of 16 fragments which are fully tested by Espresso.

Libraries

Stable samples - Kotlin

Sample Description
master The base for the rest of the other branch.
Uses Kotlin, Architecture Components, AppExecutors, Dagger, Retrofit Data Binding, etc. and uses Room as source of truth, with a reactive UI.
coroutines-flow Same like the master branch but much better as it uses coroutines Flow (single source of truth with Flow). For testing coroutines Flow check Tandem Repository.
paging3-network This branch uses Paging3 library to handle paging, it is wayyy easier.
paging3-rxjava This branch uses RxJava2 with the Paging3 library as well as ViewBinding instead of kotlin synthetic.

App Demo

License

Copyright 2020 The Android Open Source Project, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.