Application Architecture:

Architecture diagram

  • Repository: A repository is any component that is responsible for making data requests. This could be a remote server, local preference, database, etc. The repository should not have side effects such as calling a different repository. The response should be responsible for mapping information from Dto(data transfer objects) to domain-specific data classes. Repositories should not be responsible for data manipulation of response. For example, if a repository is requesting a list of users, but the screen only cares about users with a certain property, the use case should be responsible for filtering the list accordingly. By removing logic from your view model, we make the view model slim and separate business logic from our repository(which should only fetch data.

  • ViewModel: A view model is responsible only for taking the result of an action and mapping it into a ViewState. It connects the view with any use case. It consumes ui events, triggers use cases, and processes a use case response into a ViewState that is exposed For the screen to render.

  • UseCase A use case is responsible for whatever happens between a view model and repository i.e. consuming responses from data requests and mapping that into a relevant result for the ViewModel to handle.

✨ Features

  • Search for Task by keyword.
  • Fire Base Back End As Service
  • Create user account with email and password
  • Reset Password
  • Search news by category.

🔌 Plugins

Name Usage
Retrofit HTTP Requests
Glide Loading Images
Dagger Hilt Automated Dependency Injection
Room Library Data Storage and persistence
Turbine Testing Flow
LoitteAnimation Animation library
Truth Library Assertion Test
Mockk Creating Fake Entities for TestTest