- Single Activity
- MVVM Pattern
View: Renders UI and delegates user actions to ViewModel
ViewModel: Can have simple UI logic but most of the time just gets the data from UseCase
UseCase: Contains all business rules and they written in the manner of single responsibility principle
Repository: Single source of data. Responsible to get data from one or more data sources
- Navigation Component: Consistent navigation between views
- LiveData: Lifecycle aware observable and data holder
- ViewModel: Holds UI data across configuration changes
- Databinding: Binds UI components in layouts to data sources
- Coroutines: Asynchronous programming
- Glide: Image loading and caching
- Room: Object mapping for SQLite
- Hilt: Dependency injector