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.
- Instalar dependências do projeto
$ npm install
- Baixar migrations
$ npx migrate dev
- Adicionar chaves no arquivo .env
- Execute o script abaixo para otimizar o processo de gerar as chaves: JWT_PRIVATE_KEY e JWT_PUBLIC_KEY
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private.key -out public.key -outform PEM
JWT_PRIVATE_KEY=$(openssl base64 -in private.key -A)
JWT_PUBLIC_KEY=$(openssl base64 -in public.key -A)
echo "JWT_PRIVATE_KEY=\"$JWT_PRIVATE_KEY\"" >> .env
echo "JWT_PUBLIC_KEY=\"$JWT_PUBLIC_KEY\"" >> .env
Por último adicione o o valor para DATABASEURL **_DATABASE_URL="postgresql://postgres:docker@localhost:5432/personal-finance?schema=public"**
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
Encontrado no arquivo
kinvo-finance-api.json
- 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".
[x] Filtro na listagem de movimentações por data (data inicial e data final);
[x] Paginação na listagem de movimentações.
[x] Todos os requisitos do Júnior;
[x] API Rest semântica (se escolheu desenvolver uma API Rest);
[x] Arquitetura minimamente escalável;
[x] Cobertura mínima de testes automatizados.
[x] Todos os requisitos do Pleno;
[x] Autenticação:
[x] Cadastro de usuário;
[x] Login;
[x] Necessidade do usuário estar autenticado para a realização das atividades citadas no contexto.
[x] Dockerizar a aplicação;
[x] Boas práticas de POO (Exemplos: SOLID, Design Patterns, etc.).
[x] Cache;
[ ] Segurança da aplicação;
[ ] Deploy.
- 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.
- 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.
- O cumprimento dos requisitos solicitados para uma vaga em determinado nível não é garantia de aprovação. Focamos em avaliar a forma como os requisitos foram cumpridos.
- 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.
Nest is MIT licensed.