Skip to content

Esse App busca as vagas disponíveis na plataforma do GitHub através de consumo de API.

Notifications You must be signed in to change notification settings

Diego1906/GitHubJobs

Repository files navigation

GitHubJobs

O App busca as vagas disponíveis na plataforma do GitHub através de consumo de API.

No Design de Arquitetura do projeto foi utilizado o conceito MVVM + Clean Architecture.

API utilizada The GitHub Jobs API.

O aplicativo possui duas telas e elas são:

  • 1º Tela que apresenta a lista de vagas.
  • 2º Tela de detalhes da vaga selecionada.

No desenvolvimento do projeto foram utilizadas as tecnologias descritas abaixo:

  • Linguagem de Programação

    • Kotlin.
  • Componentes de Arquitetura, Bibliotecas Internas e Jetpack

  • Bibliotecas Externas

    • Retrofit é utilizada para fazer requisições HTTP a serviços Web.
    • Moshi é uma moderna biblioteca JSON para Android, Kotlin e Java. Ela faz de forma fácil a conversão de um JSON para objetos Kotlin e Java.
    • Glide O Glide suporta a busca, decodificação e exibição de fotos, imagens e GIFs animados. O Glide inclui uma API flexível que permite que os desenvolvedores se conectem a quase qualquer pilha de rede.
  • Bibliotecas para Testes

    • Mockito-Kotlin é uma pequena biblioteca que fornece funções de ajuda para trabalhar com Mockito em Kotlin
    • JUnit é um framework que facilita a criação e manutenção do código para a automação de testes com apresentação dos resultados.
  • Design de Arquitetura

    • MVVM é o padrão de design de arquitetura de software que a Google indica para os novos desenvolvimento. Os novos componentes de arquitetura já são lançados com suporte a esse tipo de padrão.
  • Padrões de Projeto (Design Patterns)

    • Repository é estratégia para abstrair o acesso aos dados. Ele é composto pelo código em uma aplicação que lida com o armazenamento e a recuperação de dados. Mais detalhes.
    • Dependency injection é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema.
    • Adapter o padrão Adapter converte a interface de uma classe para outra interface que o cliente espera encontrar, "traduzindo" solicitações do formato requerido pelo usuário para o formato compatível com o a classe adapter e as redirecionando. Dessa forma, o Adaptador permite que classes com interfaces incompatíveis trabalhem juntas.
    • UseCase o objetivo de um caso de uso é servir o caso de uso de um usuário do sistema. Por exemplo, "acender a luz" ou "enviar e-mail para o locatário".
  • Princípios do SOLID utilizados