This project was created as the final presentation in an Android training course provided by CWI. It was named "CodeChallenge" because its features are very similar to my CodeChallenge-iOS (list view, details view and search), so it ends up being the Android version of that.
The TMDB API is used.
- Focus on simplicity (since the app is pretty simple)
- MVVM where state retention + LiveData observation are needed, MVP otherwise
- Simple dependencies (no Dagger, no Rx - even though I'm a big fan of Rx)
- ServiceLocator pattern replaces Dagger quite well without generated code surprises
- Single-activity app (however not yet using the Navigation Architecture Component)
- Opinion: Google's Architecture Components and Kotlin coroutines might together become an Rx killer in the Android community
- Models built with a generator (JsonToKotlin plugin)
- Using moshi with codegen as the converter, so kotlin-reflection isn't added
- Unit tests do not require an internet connection (locally mocked API)
- Shared code between unit and instrumented tests
- Instrumented tests use the locally mocked API too (TestApplication injects a TestServiceLocator)
- The architecture is prepared to receive more tests but so far only a very few
- Using PagedList from arch comps to handle pagination and state for me
- ConstraintLayout with constraints changed in runtime
- Using standard SearchView and SearchRecentSuggestionsProvider