THIS IS THE REACTIVE (RXJAVA) VERSION, FOR COROUTINES VERSION GO TO COROUTINES BRANCH
Android Project template using View Model MVVM and Repository Data pattern, with Dagger 2 / Hilt and Jetpack (Androidx) libraries (navigation component, room, worker, etc...).
Template includes basic implementation for a launch screen, a home screen, an authentication screen and a profile screen. Authentication is implemented using OAuth2 and automatically refresh token when a 401 HTTP exception is thrown.
Also features :
- Permission Launcher Android lightweight library to perform permissions request the right way using ActivityResultCallback.
- An AlertDialog implementation using DialogFragment that survive state lost and returns actions/results using setFragmentResultListener API. Some kotlin extensions are available to make results even straightforward.
- Some utilities.
- Base classes for Adapter/ListAdapter and ViewHolder.
- Dynamic retrofit url to handle multiple server url (production, pre production, etc...), selector screen/dialog for server not implemented here though.
- Structured values resources files as recommended(themes, styles, shapes, types).
- Gradle kotlin DSL.
Common used libraries :
Package structure is inspired from this reading.