I used MVVM with Android Architecture Components ViewModel + LiveData that helps the data survive from configuration change and makes the ViewModel decouple from View through observers that makes it highly testable and easy to modify and fix.
- Dependency Injection using Dagger
- Retrofit x RxJava & RxAndroid
- Timber for logs.
- Room
- Unit Testing
- Continuous Integration using CircleCI