O sistema deve oferecer a possibilidade de usuários realizarem transações financeiras como saque e transferencia entre contas.
Um usuário pode se cadastrar e ao completar o cadastro (com verificaçào de email) ele recebe R$ 1000,00.
Com isso ele pode transferir dinheiro para outras contas e pode sacar dinheiro. O saque do dinheiro simplesmente manda um email para o usuário informando sobre o saque e reduz o seu saldo.
Nenhuma conta pode ficar com saldo negativo.
É necessário autenticação para realizar qualquer operação.
Alguns relatórios devem ser gerados para o backoffice:
- Total transacionado (R$) por dia, mês, ano e total.
- Número de usuários que não transacionam há mais de 1 mês (por dia)
- O desafio deve ser feito na linguagem Elixir.
- A API pode ser JSON ou GraphQL
- Docker é um diferencial.
O desafio será avaliado através de cinco critérios.
- O código possui algum controle de dependências?
- O resultado final está completo para ser executado?
- O resultado final atende ao que se propõe fazer?
- O resultado final atende totalmente aos requisitos propostos?
- O sistema está rodando em algum lugar público?
- Existe monitoramento de logs e falhas no sistema?
- O código está de acordo com o guia de estilo do Elixir?
- O código está bem estruturado?
- O código está fluente na linguagem?
- O código faz o uso correto de Design Patterns?
- O código foi entregue com um arquivo de README claro de como se guiar?
- O código possui comentários pertinentes?
- O código está em algum controle de versão?
- Os commits são pequenos e consistentes?
- As mensagens de commit são claras?
- O código possibilita expansão para novas funcionalidades?
- O código é Don't Repeat Yourself?
- O código é fácil de compreender?
- O código possui configuração de lint?
- O código possui testes unitários?
- O código possui teste de cobertura?
- Integração Contínua?