Skip to content

StephenLynx/desafio-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published