From Google Architectures, I'm making the base project
Android Architecture Components A collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.
New lifecycle-aware components help you manage your activity and fragment lifecycles. Survive configuration changes, avoid memory leaks and easily load data into your UI using LiveData, ViewModel, LifecycleObserver and LifecycleOwner.
Avoid boilerplate code and easily convert SQLite table data to Java objects using Room. Room provides compile time checks of SQLite statements and can return RxJava, Flowable and LiveData observables.
New lifecycle-aware components help you manage your activity and fragment lifecycles. Survive configuration changes, avoid memory leaks and easily load data into your UI using LiveData, ViewModel, LifecycleObserver and LifecycleOwner.
- Lifecycle - Create a UI that automatically responds to lifecycle events.
- livedata - Build data objects that notify views when the underlying database changes.
- viewmodel - Store UI-related data that isn't destroyed on app rotations.
- room - Access your app's SQLite database with in-app objects and compile-time checks.
https://developer.android.com/topic/libraries/architecture/