Esse é o back end desenvolvido para o desafio técnico da empresa MaxMilhas.
Atualmente o time de análise antifraude do ecommerce realiza um controle de CPFs emuma planilha eletrônica. Nesta planilha são adicionados CPFs com risco de fraude. Com o aumento da nossa base de clientes têm ficado cada vez mais difícil manter o controle manual. Com isso o Product Owner do time levantou os principais requisitos funcionais para desenvolvimento de um sistema que controle os CPFs adicionado-os em uma lista restrita.
-
GET - /cpf
- Descrição: Retorna a lista de CPFs da lista restrita
- Respostas:
- 200 OK - Content: [ { "cpf": "64852893055", createdAt: "2019-12-17T22:22:08.547Z"} ]
-
GET - /cpf/{cpf}
- Descrição: Verificar se um determinado CPF está na lista restrita
- Respostas:
- 200 OK - Content: { "cpf": "64852893055", createdAt: "2019-12-17T22:22:08.547Z"}
- 400 BAD REQUEST - Content: { "type": "InvalidCpfException", "message": "CPF is not valid."}
- 404 NOT FOUND - Content: { "type": "NotFoundCpfException", "message": "CPF was not found"}
-
POST - /cpf
- Descrição: Adicionar CPF na lista restrita
- Parâmetros: { "cpf": "64852893055" }
- Respostas:
- 201 CREATED
- 400 BAD REQUEST - Content: { "type": "InvalidCpfException", "message": "CPF is not valid."}
- 409 CONFLICT - Content: { "type": "ExistsCpfException", "message": "CPF already exists."}
-
DELETE - /cpf/{cpf}
- Descrição: Remover um CPF da lista restrita
- Respostas:
- 204 NO CONTENT
- 400 BAD REQUEST - Content: { "type": "InvalidCpfException", "message": "CPF is not valid."}
- 404 NOT FOUND - Content: { "type": "NotFoundCpfException", "message": "CPF was not found"}
As seguintes ferramentas e frameworks foram usados na construção do projeto:
A API foi desenvolvida em Java por ser a linguagem da vaga aplicada, as versões 17 do Java e 3 do Spring Boot foram escolhidas por serem as mais recentes, enquanto o maven foi escolhido por ser a tecnologia mais popular para gerenciamento de pacotes do Java. As ferramentas de testes como JUnit, Mockito e AssertJ também foram escolhidas pela popularidade na comunidade, e possibilitam juntas uma gama muito grande de métodos para realizar as asserções nos testes e mocks para realizar testes unitários com qualidade. As ferramentas auxiliares como Lombok, Mapstruct e SLF4J também são muito populares, Lombok e Mapstruct são ótimas para reduzir código desnecessários na aplicação fornecendo respectivamente anotações que geram códigos em tempo de execução e metódos que fazem mapeamento automático entre objetos. Já o SLF4J fornece um fachada de logging para várias implementações de log técnicos (INFO, ERROS, DEBUG, etc.) A escolha do banco de dados para o MongoDB se deu pela não necessidade de manter relacionamento entre os dados, fornecendo assim grande desempenho, fleibilidade, escalabilidade, facilidade de desenvolvimento e baixa manutenção. A utilização do Mongo Express auxilia na visualização do banco de dados enquanto a OpenAPI do Swagger auxilia na documentação e visualização dos elementos da API. Por ultimo, a Stella é uma biblioteca de terceiros simples e leve para validação de CPF e CNPJ.
-
Clone o repositório
-
Acesse a pasta em que foi clonado
-
Instale o docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- Dê permissão para rodar o Docker com seu usuário corrente:
sudo usermod -aG docker $USER
- Garanta que o docker esteja rodando
sudo service docker start
- Rode os containers com
docker compose up --build -d
- Para verificar os containers em execução
docker ps
-
Acesse http://localhost:8080/swagger-ui/index.html para ver a documentação da api com o Swagger
-
Acesse http://localhost:8081 para ver a interface gráfica do MongoDB