This Android project template is built using the following technologies:
- MVVM (Model-View-ViewModel) architectural pattern
- Clean Architecture
- Hilt for dependency injection
- Coroutines for asynchronous programming
- MockFit for mock server responses
- Retrofit for networking
- Jackson for JSON parsing
- Espresso for UI testing
- Mockito for mocking dependencies
- Truth for assertions
- Data Binding for UI binding
The project follows the Clean Architecture principles, organizing code into layers:
- app: Contains the main Android application module.
- data: Implements the data layer, including repositories, data sources, and models.
- domain: Defines the business logic layer, including use cases and domain models.
- presentation: Implements the presentation layer, including ViewModels, UI components, and data binding.
Hilt is used for dependency injection, providing a simple and efficient way to manage dependencies throughout the application. The use of Hilt ensures a modular and testable codebase.
Coroutines are utilized for handling asynchronous operations in a concise and efficient manner. Coroutines simplify the code by providing structured concurrency and allowing developers to write asynchronous code in a sequential style.
Retrofit is employed for handling network communication, providing a robust and flexible framework for making API requests. Jackson is used for JSON parsing, ensuring efficient and reliable serialization and deserialization of data, and MockFit is used to mock server responses.
Espresso is utilized for UI testing, Mockito for mocking dependencies, and Truth for expressive assertions.
Data Binding is integrated to bind UI components directly to data sources, reducing boilerplate code and enhancing the separation of concerns between the UI and the underlying data.