Giter Club home page Giter Club logo

desafiozupandroid's Introduction

Desafio Zup Android

por Carlos Nicoalu Galves, Tech Lead Android.

This is challenge to show your skills in android development in Kotlin language programming.

PT-BR

Guide Line:

Passos para concluir o desafio:

1a etapa:

  • Crie um fork a partir deste repositório
  • Crie um projeto dentro deste repositório
  • Faça um Pull Request para este repositório (Descreva que você esta realizando o teste com seu nome e contato de email disponível)

2a etapa:

  • O aplicativo que você deve criar é o seguinte: Crie uma tela de Login, com usuario e senha com botão Login, e um botão de cadastro. Crie uma tela de cadastro onde o usuario digita
    • nome de usuario
    • senha botão de cadastrar usuario
  • Crie uma tela de entrada do aplicativo que possua um header de busca no topo (que ao digitar por exemplo Contato, filtre a lista inferior e mostre só o Contato como primeira opção ao selecionar) uma lista de opcoes do aplicativo sendo
    • no header dessa lista 3 botoes com a seguinte descricao
    • botao 1: Minha conta
    • botao 2: Meu Saldo
    • botao 3: Minha fatura
    • na sequência uma lista na vertical com as seguintes opcoes
    • Investir meu dinheiro
    • Comprar credito para celular
    • Fazer uma transacao
    • Contato

Todas as telas vão para uma tela em branco para não tornar o teste muito demorado também.

Telas para referência visual:

Screen Shot 2020-08-21 at 13 12 22

Screen Shot 2020-08-21 at 13 10 15

Screen Shot 2020-08-21 at 13 10 21


O layout pode ser como acima, so que em um .xml, voce pode se quiser deixar ele mais bonito.


3a etapa:

O que esperamos do seu desenvolvimento:

  • Separação de responsabilidades entre as camadas do app.
  • Como você organiza seu código dentro de suas classes
  • Formatação
  • Uso de expressões disponíveis no Kotlin principalmente em arrays
  • Arquitetura: Você define porém isso é avaliado e você pode justificar o porquê de qual arquitetura escolheu.
  • Preferência para uso de Coroutines (Chamada de API)
  • Testes unitários dando coverage do seu projeto (Não precisa fazer de todo o projeto, uma parte do seu app como exemplo já basta, porém poucos testes resulta também em uma não preocupação)
  • Testes integrados apenas para mostrar que você entende como validar um layout (Não precisa fazer de todas as telas, um exemplo já basta)
  • navegação entre suas telas, entre activities e fragments e o porquê de escolher um ou outro.
  • Mostrar conhecimentos em Orientação a Objeto e SOLID.
  • Evitar boilerplate
  • Injeção de dependência com o framework ou nativo como preferir.
  • Legibilidade do seus métodos podendo ser em Inglês ou Portugues, fique a vontade em decidir.
  • Para as chamadas de api, crie uma classe mock que responda um login de sucesso e traga uma lista do seu aplicativo como descrito acima.
  • Modularizar o app é um ### plus
  • Usar UseCase é um ### plus
  • Fazer cache do login, uma vez digitado e sucesso, não precise mais digitar o usuario e senha na próxima vez que entrar no app.
  • Usar o viewmodel do android é um ### plus
  • Caso queira usar um site com json estatico para consumir uma informação real é um ### plus Links: https://beeceptor.com/ https://designer.mocky.io/

4a etapa:

Ao finalizar, faça o PR e aguarde o feedback.


tempo de desenvolvimento:

Uma vez feito o PR da primeira etapa você tem 2 semanas para fazer isso. Se precisar mais tempo faça o PR apenas quando souber que vai conseguir finalizar esse teste. Faça pelo menos 3 commits para sabermos que você sabe dividir suas tarefas.

Dúvidas você pode criar uma issues ali em cima, se for um bloqueio meu contato: [email protected]

Porém o teste esta todo em você, não há chamadas reais, tudo é fake no momento.


Resultado de nivelamento:

Voce pode fazer ate onde se sentir a vontade, o resultado conforme mais pontos sao atendidos, maior sua chance de senioridade.

desafiozupandroid's People

Contributors

nicconicco avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.