This sample app has been developed with Kotlin following an MVVM architecture pattern with a modular approach for Challenge given by Neugelb Studios.
- Home screen: List movies by fetching from themoviedb with pagination, scroll to load more movies.
- Search by Name: Just enter name of the movie and press search button or wait.
- Details screen: List down movie details by fetching from themoviedb.
- Koin: Dependency injection
- Reactive streams: Networking & Async.
- LiveData and ViewModel: Isolate business logic and maintain state.
-
Koin: Koin is a simple powerful Dependency injection framework for Kotlin. Written in pure Kotlin using functional resolution only: no proxy, no code generation, no reflection!
-
Modular: The app is developed with a modular approach to support following:
- Faster gradle builds
- Re-usability of common functionality across applications / modules
- Easily pluggable into Instant apps
- Better team work, as one person can have the sole responsibility of a module
- Smoother git flows
app
module is where the application initialises.movie
dynamic module is where our all screens reside.MovieActivity
holds theMovieSearchFragment
&MovieDetailsFragment
.- The packages are created using MVVM pattern.
You will need a device / emulator with Android Oreo (API 27) and up.
Test cases for the MovieSearchVM
& MovieDetailsVM
have been implemented using
junit
: A unit testing frameworkrobolectric
: A framework that brings fast and reliable unit tests to Android.mockitoKotlin
: A small library that provides helper functions to work with Mockito in Kotlin.aacTesting
: Test helpers for LiveData
- themoviedb: https://developers.themoviedb.org/3
- Koin: https://github.com/InsertKoinIO/koin
- Retrofit:https://square.github.io/retrofit
- RxJava2: https://github.com/ReactiveX/RxJava
- mockito-kotlin: https://github.com/nhaarman/mockito-kotlin
- Robolectric: https://github.com/robolectric/robolectric
- Joda-time: https://github.com/JodaOrg/joda-time
- Carbon: Used to create beautiful images of source code.
- Convertio: Used to convert app usage video to gif file.
- makeareadme: Used to create readme file.
Licensed under the Apache License, Version 2.0