- Docker
- Docker Compose
- NVM
- Node 14:
nvm install 14
- NPM - Empacotado com o node
- Visual Studio Code
- Execute
npm install
para instalar as dependências - Execute
docker-compose up -d
para subir os containers necessários para o ambiente de desenvolvimento. Certifique-se que as portas da sua máquina estão abertas (consulte o docker-compose.yml) - Execute o comando
cp -v .env.example .env
para gerar um arquivo .env com as variáveis de ambiente de exemplo preenchidas. Certifique-se que não precisa ajustar nenhuma das variáveis - Execute o comando
npm run import
para importar os dados do arquivo CSV para o Banco de Dados. - Execute o comando
npm run dev
para executar o app.
- Execute o comando
npm test
para executar todos os testes unitários do projeto - O Jest já está configurado para gerar o relatório de cobertura (coverage)
- O Coverage Threshold está configurado com o percentual de aceitação de 80%. Portanto o jest retornará erro (error code > 0) caso o percentual de cobertura esteja abaixo. Isso irá "quebrar" o build, certifique-se que este critério de aceitação esteja satisfeito.
- Para escrever um teste unitário crie um arquivo com o mesmo nome do modulo a ser testado e com a extensão .test.ts
- O projeto possui a dependência ts-auto-mock que facilita a geração de stubs.
- O projeto possui o husky configurado. Isso significa que o husky instalou um git hook na no seu ambiente local (quando executou o npm install) que vai rodar o linter, o formatter e os testes unitários antes de fazer o push pro repositório. Caso um desses steps retorne erro o push será cancelado.
- Execute o comando
npm run fmt
para formatar o código segundo os critérios do projeto. - Execute o comando
npm run lint
para verificar se o projeto está em compliance com os critérios de aceitação do linter.
A API está documentada em formato Swagger. Para expor a documentação local basta executar o ambiente de desenvolvimento (npm run dev
) e acessar a url http://localhost:3000/api-docs.
A recomendação é que use o Swagger apenas como documentação mas utilize alguma ferramenta externa como CURL ou Postman como client.