Git Product home page Git Product logo

maxmilhas-desafio's Introduction

Desafio Técnico Backend MaxMilhas

Esse é o back end desenvolvido para o desafio técnico da empresa MaxMilhas.

Contextualização do Problema

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.

Descrição da API

  • 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"}

Tecnologias

As seguintes ferramentas e frameworks foram usados na construção do projeto:

JAVA 17 SPRINGBOOT 3 MAVEN LOMBOK JUNIT MOCKITO ASSERTJ MAPSCTRUCT OPENAPI STELLA MONGODB MONGOEXPRESS SLF4J Docker

Por quê?

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.

Como rodar

  1. Clone o repositório

  2. Acesse a pasta em que foi clonado

  3. Instale o docker

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. Dê permissão para rodar o Docker com seu usuário corrente:
 sudo usermod -aG docker $USER
  1. Garanta que o docker esteja rodando
sudo service docker start
  1. Rode os containers com
docker compose up --build -d
  1. Para verificar os containers em execução
docker ps
  1. Acesse http://localhost:8080/swagger-ui/index.html para ver a documentação da api com o Swagger

  2. Acesse http://localhost:8081 para ver a interface gráfica do MongoDB

maxmilhas-desafio's People

Contributors

bernardo-rodrigues avatar bernardo-capco avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.