Skip to content

Instantly share code, notes, and snippets.

@virgiliojr94
Last active April 17, 2024 17:35
Show Gist options
  • Save virgiliojr94/e3075c1fcae107eaf0edc0664619cde9 to your computer and use it in GitHub Desktop.
Save virgiliojr94/e3075c1fcae107eaf0edc0664619cde9 to your computer and use it in GitHub Desktop.

Desafio Android Junior, Pleno e Senior (escolha um e execute!)

Descrição do Desafio

O desafio consiste em desenvolver um aplicativo Android em Kotlin que consuma a API pública do Rick & Morty: https://rickandmortyapi.com. Sinta-se à vontade para escolher entre REST e GraphQL.

⚠ As imagens abaixo são apenas exemplos e não devem ser utilizadas como referência para o layout do seu aplicativo. Use sua criatividade.

Parte 1: Personagens

1.1 Listagem de personagens

Utilize o endpoint /character para listar os personagens. Cada item da lista deve exibir a foto e o nome dos personagens.

Exemplo: Lista de personagens

1.2 Filtros de personagem

Utilize o mesmo endpoint de listagem (agora passando parâmetros) para filtrar os personagens por nome e status.

Exemplo: Filtros de personagem

Parte 2: Detalhes do personagem

Ao clicar em um personagem da lista, navegue para a tela de detalhes e exiba informações adicionais como espécie, gênero e tipo.

Exemplo: Detalhes do personagem

O que será avaliado

  • Uso obrigatório da linguagem Kotlin;
  • Implementação dos requisitos obrigatórios;
  • Utilização de Jetpack Compose para a construção da interface (opcional);
  • Uso de programação reativa e/ou assíncrona (recomendamos Coroutines);
  • Serialização do response da API de JSON para Data Class (recomendamos Kotlin Serialization);
  • Testabilidade;
  • Legibilidade do código;
  • Manutenabilidade do código.

Comandos que devem funcionar com sucesso

gradlew build
gradlew connectedCheck
gradlew lintKotlin

Requisitos

Nível Iniciante

Obrigatório:

  • Tela de listagem de personagens.

Opcional:

  • Tela de detalhes do personagem.
  • Paginação da lista de personagens.
  • Filtros de personagem.

Nível Júnior

Obrigatório:

  • Tela de listagem de personagens (com paginação).
  • Tela de detalhes do personagem.

Opcional:

  • Escrita de testes unitários e/ou de UI.
  • Filtros de personagem.

Nível Pleno

Obrigatório:

  • Tela de listagem de personagens (com paginação).
  • Tela de detalhes do personagem.
  • Filtro de personagens.
  • Suporte a rotação de tela (orientações portrait e landscape).
  • Escrever testes unitários e/ou de UI.

Opcional:

  • Suporte ao modo offline (cachear localmente response da API).
  • Adicionar regras do Proguard.
  • Boas práticas:
    • README explicando as tomadas de decisões do projeto (dica do time: dedique um tempo aqui);
    • Respeite os princípios de SOLID e Clean Code;
    • Uso de Dependency Injection (assistida ou não por frameworks);
    • Uso de uma arquitetura de responsabilidades bem definida (como MVVM, por exemplo);
    • É importante que você entregue uma interface otimizada, e que faça uso das técnicas mais modernas relacionadas aos toolkits de UI nativos.

Nível Senior

Obrigatório:

  • Tela de listagem de personagens (com paginação).
  • Tela de detalhes do personagem.
  • Filtro de personagens.
  • Suporte a rotação de tela (orientações portrait e landscape).
  • Escrever testes unitários e de UI.
  • Suporte ao modo offline (cachear localmente response da API).
  • Adicionar regras do Proguard.

Boas práticas:

  • README explicando as tomadas de decisões do projeto (dica do time: dedique um tempo aqui);
  • Respeite os princípios de SOLID e Clean Code;
  • Uso de Dependency Injection (assistida ou não por frameworks);
  • Uso de uma arquitetura de responsabilidades bem definida (como MVVM, por exemplo);
  • É importante que você entregue uma interface otimizada, e que faça uso das técnicas mais modernas relacionadas aos toolkits de UI nativos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment