Adithya-13 / MadeSubmsission

Submission MADE (Menjadi Android Developer Expert) in Dicoding Course.

Home Page:https://www.dicoding.com/academies/165/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Submission 2 Dicoding MADE : Movie App

Submission 2 MADE (Menjadi Android Developer Expert) in Dicoding Course.

Platform Kotlin Gradle Star Circle CI

Table of Contents

Introduction

This project is made to fulfill a Submission in Dicoding course and the last course in Android Learning path.

As you can see, this repos have 4 Branch, master, circle-ci-project-setup, submission1, submission2, You can see at Branch submission1 if you want to look at the code, and clone it with DownGit, and the branch master & submission2 is exactly same, because i merged it into branch master from branch submission2, just clone or download it if you want to see the code, thanks.

In this project, I learned many things, such as Clean architecture, Design Pattern, Networking with Retrofit, Reactive Programming with Coroutines Flow, Dependency Injection with Koin, Local Database with Room Persistence, Modularization, Dynamic Feature, Security, Useful Library, Continuous Integration, Performance, and many things.

For the 3rd Party Library i used in this project, you can look here, and for the Tech Stack, i used the MVVM Architecture Pattern, Dependency Injection (DI) with Koin, and so many things that you can see at here.

I Use the TheMovieDatabase for the data source. first thing first, you have to get the API Key from TheMovieDatabase, then, follow the instruction here.

I Hope this Project will help someone, if you feel helped with this project, you can give stars to support me, thank you very much :)

Installation

Clone or Download and Open it into Android Studio for Submission 2

    https://github.com/Adithya-13/MadeSubmsission.git

You can use the DownGit for download Submission1 separately, Copy this

    https://github.com/Adithya-13/MadeSubmsission/tree/submission1

and Paste it into DownGit, after that click Download Button, and voila, you can clone the code.

Change the API_KEY here

class RemoteDataSource(private val apiService: ApiService) {

    private val apiKey = "" //REPLACE YOUR API KEY HERE!!

    suspend fun getMovies(): Flow<ApiResponse<List<MovieResponse>>> {
       ....
    }

    suspend fun getTvShows(): Flow<ApiResponse<List<TvShowResponse>>> {
       ....
    }

}

you can get API_KEY from TheMovieDb

Demo

All Movies All Tv Shows Detail Movies Detail Tv Shows
Search Movies Search Tv Shows Favorite Movies Favorite Tv Shows

Features

  • Get All the Movies and Tv Shows
  • Search the Movies and Tv Shows
  • Favorited Movies and Tv Shows
  • Sort the Movies and Tv Shows by: Popularity, Vote, Release Date, and Random
  • Share the Movies and Tv Shows to other Application

Tech Stack

  • MVVM (Model-View-ViewModel) Architecture Pattern
  • Modularization (core module)
  • Dynamic Feature (favorite module)
  • Clean Architecture (data, domain, presentation)
  • Dependency Injection with Koin
  • Coroutines Flow
  • ViewBinding
  • Room Persistence
  • RawQuery
  • Obfuscation with Proguard
  • Encryption with SQLCipher
  • Certificate Pinning with OkHttp
  • Continuous Integration with Circle-CI

Dependencies