Vamos criar uma carteira digital, com as seguintes funcionalidades:
- cash-in, que é a entrada de dinheiro na conta.
- cash-out, que é a retirada do saldo (ou parte dele).
- transferências, que é quando um usuário usa seu saldo para transferir para outro usuário.
Para o cadastro do usuário (abertura da conta), os seguintes campos são obrigatórios:
- nome completo
- cpf
- data de nascimento
- senha
Para o cadastro, temos as seguintes regras:
- o nome completo é composto por Nome e Sobrenome, podendo ter nome do meio.
- uma pessoa não pode ter mais de uma conta.
- a legislação, atualmente não nos permite ter clientes com menos de 18 anos, mas isto está para mudar em breve.
Para as movimentações, temos a seguintes regras:
- no primeiro cash-in, daremos um bônus de 10% do valor recebido a título de boas vindas.
- em cash-out, cobramos uma tarifa de 1%.
- as transferências não geram bonificação nem tarifas.
- a conta jamais poderá ficar negativa.
Dado tudo isso, o seu trabalho aqui é criar um conjuto de APIs que forneçam:
- cadastro da conta.
- cash-in de valores.
- transferência entre contas.
- cash-out.
- consulta do saldo disponível.
- listagem de transações por período.
O que iremos avaliar:
- Se a sua solução atende tudo que foi solicitado.
- A organização do seu projeto, e a forma que seu código foi escrito.
Itens que nos deixam com mais vontade de ter você no nosso time:
- Você se preocupou com performance da aplicação.
- O código é fácil de dar manutenção.
- Recebemos testes e esses funcionam.
- Você escreveu um pequeno manual do que precisamos fazer para rodar a aplicação.
Como queremos receber isso?
Link para um repositório online (github é uma ótima opção).