Skip to content

Desafio proposto para admissão de emprego em empresa multinacional do ramo financeiro e dados / Challenge proposed for admission of employment in a multinational company in the financial and data sector

Notifications You must be signed in to change notification settings

matheusgomessouza/my-score-app

Repository files navigation

My Score App ( Desafio de admissão / Admission challenge )

Desafio proposto / Challenge proposal

Estamos muito felizes em saber que você chegou até aqui. Realize o teste com calma, essa é a oportunidade de demonstrar suas habilidades e conhecimentos!

É hora de codar!

Imagine que...

Você trabalha em uma plataforma com taxa de acesso por smartphone em +80%. Todos os usuários do seu sistema possuem uma pontuação de 0 - 100, ela influencia diretamente na jornada de cada um. Portanto, sua tela e elementos apresentados terão cores e ordenação de acordo com este valor.

O range de pontuação é definido com base na situação financeira do usuário, são elas:

  • Caso a pontuação esteja abaixo de 30, ele recebe ofertas para negociar suas dívidas;
  • Caso sua pontuação esteja entre 31 e 60, ele está elegível para solicitar crédito, podendo escolher uma das proposta oferecidas;
  • Caso sua pontuação esteja acima de 50, será apresentado para ele um card com um plano de proteção ao RG;
  • Caso sua pontuação esteja acima de 90, ele receberá um desconto (%) para obter o seu programa de proteção ao RG.

Instruções: Para buscar as informações dos cards é necessário enviar a pontuação do usuário; Cada vez que o usuário fechar uma dívida/aceitar uma proposta/adquirir o plano de proteção, você deverá alterar a pontuação do usuário. Fazendo com que cards apresentados sigam as regras de pontuação; Crie uma estrutura que forneça os dados para a sua aplicação. Tecnologias: Utilize React ou Angular no desenvolvimento. Caso não sinta confortável com as opções, desenvolva com outra da sua preferência! :D

Você ganhará pontos extras, se:

  • Utilizar um pré-processador (SASS, Stylus, LESS, ...);
  • Utilizar redux-saga;
  • Escrever teste unitário (Lib/Framework da sua preferência);
  • Documentar a solução;
  • Desenvolver um código limpo e bem organizado.

🔬 Resolução: Primeiro utilizei o redux para centralizar o estado da aplicação. Distribuindo por meio do Provider essa informação para toda a aplicação.

  • Escolhi utilizar Redux + Hooks para consumir o estado e dar dispatch na action que irá alterar a pontuação do usuário cada vez que o usuário fechar uma dívida/aceitar uma proposta/adquirir o plano de proteção com uma lógica para gerar um número aleatório inteiro entre o initial_score (23) até a pontuação máxima.

  • Criei components para cada tipo de card que seria exibido conforme a pontuação do usuário e com a renderização condicional criei regras para exibí-los conforme necessário.

  • Para criar e modificar os componentes e visuais da página também utilizei a renderização condicional, no entanto, para a barra de progresso ao redor da foto optei por utilizar uma dependência que cria um component para isso. Pra modificar as cores da barra, utilizei um addListener para alterar a classe do elemento ao evento de click, criando uma condicional de acordo com as regras de pontuação.


⚙️ Tecnologias utilizadas


🚀 Como rodar o projeto

  • Instale as dependencias com yarn
  • Rode o front-end com yarn start

🧑🏾‍💻 Autor / Author

Matheus Gomes de Souza

LinkedIn: https://www.linkedin.com/in/matheus-gomes-de-souza/
E-mail: matheusg_souza@outlook.com

About

Desafio proposto para admissão de emprego em empresa multinacional do ramo financeiro e dados / Challenge proposed for admission of employment in a multinational company in the financial and data sector

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published