- Linguagens de programação: NodeJs, TypeScript;
- Banco de dados: MySQL;
- Arquiteturas: DDD, Arquitetura Hexagonal;
- Princípios: SOLID, Clean Code;
- Organização e padrão: ESLint;
- Ferramentas DevOps: Docker, Git;
- Segurança: Helmet;
- Testes: Jest, Mocha, Sinon, Chai.
Este projeto é uma aplicação web desenvolvida utilizando as linguagens de programação NodeJs e TypeScript, que seguem os princípios do SOLID e Clean Code. A arquitetura segue o padrão DDD e Arquitetura Hexagonal, o que garante a escalabilidade e manutenibilidade do código.
O banco de dados utilizado é o MySQL e para garantir a organização e padrão do código, está sendo utilizado o ESLint.
As ferramentas DevOps são Docker e Git, que garantem a automatização do processo de deploy e gerenciamento de versões.
Para garantir a segurança da aplicação, está sendo utilizado o Helmet.
Por fim, para garantir a qualidade do código, estão sendo realizados testes com as ferramentas Jest, Mocha, Sinon e Chai.
A seguir, a descrição básica da API para orientar a integração por outros times:
baseUrl = http://localhost:3001
Adicionar um CPF na lista restrita
Método HTTP: POST
URL: baseUrl/cpf
Dados enviados: { "cpf": "64852893055" }
Erro: retorna uma exceção do tipo "InvalidCpfException" ou "ExistsCpfException"
Verificar um CPF na lista restrita
Método HTTP: GET
URL: baseUrl/cpf/{cpf}
Sucesso: retorna o CPF e a data de criação no formato ISO 8601 - UTC
ex: { "cpf": "64852893055", createdAt: "2019-12-
17T22:22:08.547Z"}
Erro: retorna uma exceção do tipo "NotFoundCpfException" ou "InvalidCpfException"
Remover um CPF da lista restrita
Método HTTP: DELETE
URL: baseUrl/cpf/{cpf}
Erro: retorna uma exceção do tipo "NotFoundCpfException" ou "InvalidCpfException"
Visualizar todos os CPFs da lista restrita
Método HTTP: GET
URL: baseUrl/cpf
Sucesso: retorna um array de objetos, cada um representando um CPF da lista restrita
ex: [ { "cpf": "64852893055", createdAt: "2019-12-
17T22:22:08.547Z"} ]
- Necessário Docker instalado;
- Necessário o npm ou outro pacote similar no computador ou no container;
- Necessária a instação do Node.js no computador ou no container;
# Abra um terminal e copie este repositório com o comando
[email protected]:rafaelftourinho/desafio_maxmilhas.git
# Navegue até a pasta raíz da aplicação
# Caso esteja usando o VsCode, pode utilizar o comando no terminal dentro da pasta
code .
# Entre na pasta backend
cd app/backend
# Instale as dependências de backend
npm i
# Suba o container docker
docker-compose up -d
# A porta utilizada para rodar o node está mapeada na 3001 e a porta disponibilizada para o database é a 3002
# Ao subir o container, a aplicação irá startar automaticamente e a criação do banco de dados será feita (migrate) assim como dados pré-inseridos (seed)
# Para rodar os testes, você precisa estar na pasta backend
# Para rodar os testes de integração
npm run test:integration
# Para rodar os testes unitários
npm run test:unitary
# Para verificar os dados que volta da API .
http://localhost:3001/cpf/
Esse projeto está sob a licença MIT. Veja LICENSE para mais detalhes.