Aplicação Android desenvolvida utilizando Kotlin e arquitetura MVVM, com a finalidade de pesquisar e listar os repositório públicos do gitHub e fornecer detalhes sobre os repositórios.
1. Instale o Android Studio
2. Através do terminal, clone o repositório com o seguinte comando: $ git clone https://github.com/Felipe041198/GitHub-TechChallenge
3. Abre o projeto utilizando o Android Studio e aguarde a indexação
4. Execute o projeto
Os componentes, bibliotescas e técnicas utilizadas foram pensadas para dar a aplicação fluidez, organização e escalabilidade.
MVVM
Projeto divido em 3 camadas: A camada de Model, onde estão presentes a origem dos dados apresentados na aplicação. (Por exemplo classes de banco de dados). A camada de View, onde estão presentes as activitys/fragments responsaveís por receber e apresentar os dados. E a camada ViewModel, que vai abstrair a view e ser responsável pelo tratamento das informações apresentadas.
Material Design
As interfaces foram desenvolvidas utilizando componentes do Material Desing, para melhorar a experiência do usuário.
Coroutines
Courotines foram utilizadas para conseguir fazer um bom uso das threads disponível e potencializar a performance da aplicação, sendo possível executar rotinas em cooperação.
Paging Library 3.0
A Paging Library 3.0 permite que os dados carregados da Api sejam salvos no banco de dados e carregados de acordo com a página em questão. O Remote Mediador age como uma camada que verifica a página atual, próxima e anterior para determinar a próxima chamada à Api, assim como a operação de inserção dos dados.
Koin
Biblioteca utilizada para injeção de dependências por ser simples e pratica, além de funcionar bem.
Glide
Biblioteca utilizada para utilização de imagens.
Android Jetpack Nabigation
Componente utilizada para facilitar a navegação entre as telas.
Houve a tentativa de implementação dos testes unitários, que seria feita utilizando o JUnit para automatização dos testes e o Mockito para isolar e criar as dependências, porém a biblioteca utilizada para controlar a exibição das informações e a paginação (Paging 3.0) dificultou a implementação dos testes usando as courotines.
Dessa forma, para criar testes eficientes e lógicos, seria preciso um estudo sobre a documentação do Paging 3.0 e um tempo maior para implementação. Os resultados obtidos até o momento não foram satisfatorios para entrar na versão final do projeto.