Android app that allows the user to search for GitHub repos by a given username. We use Material Design for UI/UX. The architecture is based on Clean Architecture using Model-View-Presenter + Interactor + Repository patterns.
- Data layer: All data needed for the application comes from this layer using the Repository pattern with a Factory pattern to create an
InMemoryRepository
or aNetworkRepository
if the given username is cached or not, respectively. The idea behind this is the data source is transparent for the client. - Domain layer: All the business logic happens in this layer. You will find all the
Interactor
s here. - Presentation layer: Here lives the Model-View-Presenter (MVP) pattern, where the
View
is an Activity or a Fragment, theModel
is a UI model and thePresenter
is the man-in-the-middle that handles user actions from theView
, then consumes data throughInteractor
s and finally passes the data to be rendered to theView
.
- Unit Testing: Unit Tests that run on the JVM, using JUnit and Mockito frameworks.
- UI Testing: UI Tests that runs on an Emulator or a device, using Robotium and Espresso frameworks.