Skip to content

Movies and Tv Shows Android App, "base on" my last submission at Dicoding Belajar Android Jetpack Pro.

License

Notifications You must be signed in to change notification settings

aydbtiko24/movie-catalogue

Repository files navigation

Movie Catalogue 🎞️

build ktlint GitHub license screen

Movie Catalogue is a project "base on" my last submission at Dicoding Belajar Android Jetpack Pro which currently has 3 main screens to display A list of Movies, Tv-Shows, and Favourite.

Uses TMDB API to load Movies And Tv Shows data, if you willing to clone this repo don't forget to get the Api Key from TMDB, once you get the key copy the default API value from api.properties replace the empty string with your API key and add into your locale.properties file.

Architecture

clean

  • Presentation: A layer that interacts with the UI, mainly Android Stuff like Activities, Fragments, ViewModel, etc. It would include both domain and data layers.

  • Domain: Contains the business logic of the application. It is the individual and innermost module. It’s a complete kotlin module.

  • Data: It includes the domain layer. It would implement the interface exposed by domain layer and dispenses data to app.

To allow the business to adapt to changing technology and interfaces. While the internet might move from desktop to mobile, or from mobile to virtual assistant, the core business remains the same. I decided to rewrite Movie Catalogue with Clean Architecture.

Libraries Used 🛠

  • Jetpack libraries - Encompasses a collection of Android libraries that incorporate best practices and provide backwards compatibility in Android apps.
  • Material Design Components - Modular and customizable Material Design UI components for Android.
  • Room - Abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
  • Paging - The Paging Library makes it easier for you to load data gradually and gracefully within your app's RecyclerView.
  • Navigation - framework for navigating between 'destinations' within an Android application that provides a consistent API whether destinations are implemented as Fragments, Activities, or other components.
  • Kotlin Coroutines - For managing background threads with simplified code and reducing needs for callbacks.
  • LiveData - Observable data holder class.
  • Koin - A pragmatic and lightweight dependency injection framework for Kotlin developers.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Kotlin DSL - Gradle’s Kotlin DSL provides an alternative syntax to the traditional Groovy.
  • Secrets Gradle Plugin for Android - A Gradle plugin for providing your secrets securely to your Android project.
  • Ktlint Gradle - Provides a convenient wrapper plugin over the ktlint project.

Test Libraries Used 🛠

  • Junit - Simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
  • Espresso - To write concise, beautiful, and reliable Android UI tests.
  • Truth - Library for performing assertions in tests.
  • MockK - Mocking library for Kotlin.
  • Robolectric - Framework that brings fast and reliable unit tests to Android. Tests run inside the JVM on your workstation in seconds.
  • UI Automator - UI testing framework suitable for cross-app functional UI testing across system and installed apps.
  • MockWebServer - A scriptable web server for testing HTTP clients.
  • OkHttp Idling Resource - An Espresso IdlingResource for OkHttp.

Discuss 💬

Doubts or want to present your opinions, views? You're always welcome. You can start discussions.

Published App 🏪

Want to see or maybe try my Published App on Google Play? Let's go! I'll take you there!😀.

License

   Copyright [2021] [aydbtiko24]

   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.