Pela Complexidade do projeto, optei pelo padrão MVC, injetando o controller na camada de apresentação.
Utilizou-se RXJava para controle de entrega assíncrona e explorando a programação reativa funcional assim como o padrão observable.
Foram construídos alguns componentes para resolver problemas recorrente como a listagem de elementos, utilizando classes genéricos e exercendo os princípios KISS e SOLID.
Para testar nosso código, utilizou-se testes instrumentados com JUnit e Espresso. Não há nenhum tipo de passo de setup especifico para compilar o projeto, basta apenas abri-lo em uma IDE com suporte para projetos mobile Android e baixar suas respectivas dependências