In this app I'm using clean architecture in order to have a clean separation between the responsibilities, making the app easier to test and to read. I'm also using MVP on the UI layer also to improve readability and testability. I'm using dagger2 for dependency injection, rxjava for graphQL calls and Mockito to test.