A MVVM software architecture was used in this product for two main reasons:
- This sample app requires just displaying data from the REST Api, and by using this architecture, few to none "business" logic is required to make the necessary requirements;
- MVVM is, by it self a very robust and dynamic pattern, that easly handles all the app-related events (such as switching to landscape, or putting the app on background);
- Navigation Components for handling fragments (fragment (singular), in the case of this sample) navigation;
- Hilt for dependency intjection;
- Retrofit as the Http Client for consuming the REST Api;
- Material Design as a UI/UX guideline library;
- RXJava for handling asynchronous API calls;
- Glide for image loading;
- LiveData to make the communication between View and ViewModel dynamic;