Skip to content

Latest commit

 

History

History
73 lines (50 loc) · 2.95 KB

README.md

File metadata and controls

73 lines (50 loc) · 2.95 KB

Desafio Backend Framework

Primeiramente, obrigado pelo seu interesse em trabalhar na Framework Digital! Abaixo você encontrará todos as informações necessárias para iniciar o seu teste.

Avisos antes de começar

  • Crie um repositório no seu GitHub.
  • Faça seus commits no seu repositório.
  • Fique à vontade para perguntar qualquer dúvida aos recrutadores.
  • Fique tranquilo, respire, assim como você, também já passamos por essa etapa. Boa sorte! :)

Sobre o ambiente da aplicação:

  • A escolha do framework deve seguir as orientações enviadas pelo recrutador, caso não exista você pode utilizar um de sua preferência.

  • Tente evitar usar muitos métodos mágicos ou atalhos já prontos. Sabemos que essas facilidades aumentam a produtividade no dia-a-dia mas aqui queremos ver o seu código e a sua forma de resolver problemas.

  • Valorizamos uma boa estrutura criada por você.

Objetivo:

Desenvolver uma carteira virtual contemplando 2 tipos de usuários, clientes e lojistas, ambos têm carteira com dinheiro e realizam transferências entre eles. Vamos nos atentar somente ao fluxo de transferência entre dois usuários.

Requisitos:

  • Cadastro de usuários onde ambos tipos contenham Nome Completo, CPF, e-mail e Senha. CPF/CNPJ e e-mails devem ser únicos no sistema. Sendo assim, seu sistema deve permitir apenas um cadastro com o mesmo CPF ou endereço de e-mail.

  • Usuários podem enviar dinheiro (efetuar transferência) para lojistas e entre usuários.

  • Lojistas só recebem transferências, não enviam dinheiro para ninguém.

  • Validar se o usuário tem saldo antes da transferência.

  • Antes de finalizar a transferência, deve-se consultar um serviço autorizador externo, use este mock para simular (https://run.mocky.io/v3/1f1b822a-3d6f-4b95-9a01-b3e6191e436b).

  • A operação de transferência deve ser uma transação (ou seja, revertida em qualquer caso de inconsistência) e o dinheiro deve voltar para a carteira do usuário que envia.

  • Este serviço deve ser RESTFul.

Payload

Faça uma proposta ❤️ de payload, se preferir, temos uma exemplo aqui:

POST /transaction

{
    "value" : 100.00,
    "payer" : 4,
    "payee" : 15
}

O que será avaliado e valorizamos ❤️

  • Documentação
  • Se for para vaga sênior, foque bastante no desenho de arquitetura
  • Código limpo e organizado (nomenclatura, etc)
  • Ser consistente e saber argumentar suas escolhas
  • Modelagem de Dados
  • Manutenibilidade do Código
  • Tratamento de erros
  • Cuidado com itens de segurança
  • Arquitetura (estruturar o pensamento antes de escrever)

O que será um Diferencial

  • Uso de Docker
  • Swagger bem estruturado
  • Testes de integração
  • Testes unitários
  • Uso de Design Patterns
  • Documentação
  • Logs de aplicação bem estruturados