Awesome
Kinvo - Desafio Back-end
Instruções
- Utilize Typescript com Node;
- Desenvolva uma API REST ou GraphQL;
- Fique à vontade para escolher as libs, arquitetura, frameworks, banco de dados e etc.;
- Crie um arquivo README com instruções para executar seu projeto;
- Crie a collection do Insomnia ou Postman, salve com o nome "collection".
Contexto
Um estudante a fim de poupar gastos e controlar suas finanças pessoais resolveu desenvolver um aplicativo para lhe ajudar nessa missão. Após um estudo de caso ele mapeou as seguintes funcionalidades:
- Criação da movimentação (receitas e despesas);
- Atualização da movimentação;
- Exclusão da movimentação;
- Listagem de movimentações;
- Exibição do saldo.
Requisitos
Desenvolvedor Júnior
- Filtro na listagem de movimentações por data (data inicial e data final);
- Paginação na listagem de movimentações.
Desenvolvedor Pleno
- Todos os requisitos do Júnior;
- API Rest semântica (se escolheu desenvolver uma API Rest);
- Arquitetura minimamente escalável;
- Cobertura mínima de testes automatizados.
Desenvolvedor Sênior
- Todos os requisitos do Pleno;
- Autenticação:
- Cadastro de usuário;
- Login;
- Necessidade do usuário estar autenticado para a realização das atividades citadas no contexto.
- Dockerizar a aplicação;
- Boas práticas de POO (Exemplos: SOLID, Design Patterns, etc.).
Diferenciais
- Cache;
- Segurança da aplicação;
- Deploy.
Dicas
- Se optar por uma API REST, tenha cuidado ao definir as rotas e verbos HTTP: faça uso de boas práticas;
- Crie uma aplicação flexível, ou seja, que seja fácil incluir novas funcionalidades;
- Clean Code: o código deve ser fácil de entender;
- Atente-se a boas práticas de versionamento.
Processo de submissão
- Faça o fork deste repositório;
- Faça seu projeto neste fork;
- Suba as alterações para o seu fork;
- Submeta uma PR para este repositório.
Observações:
- O cumprimento dos requisitos solicitados para uma vaga em determinado nível não é garantia de aprovação. <strong>Focamos em avaliar a forma como os requisitos foram cumpridos.</strong>
- Apesar da listagem de requisitos mínimos acima, caso não tenha tido tempo suficiente ou tenha se esbarrado em alguma dificuldade, entregue o desafio ainda que incompleto e conte-nos na descrição do pull request quais foram as suas maiores dificuldades. Não se preocupe, avaliaremos ainda assim! :)
- Está com alguma dificuldade, encontrou algum problema no desafio ou tem alguma sugestão pra gente? Crie uma issue e descreva o que achar necessário ou entre em contato.