Git Product home page Git Product logo

teste-backend-nodejs-pleno's Introduction

teste-backend-nodejs-pleno

Este é um teste de construção de uma API básica com uma simples integração ao mundo externo. Utilize sua criatividade e habilidade para fazer da melhor forma que você considerar.

Requisitos

•	Usar o Node.js 18
•	Usar banco de dados relacional MySQL, Postgres ou SQLite
•	Versionar tudo em um repositório Git e adicionar um README com instruções de como fazer o deploy do seu projeto
•	Usar padrões de projeto, SOLID, TDD e outros paradigmas modernos serão bem vistos

Solução

1 - Com base no descritivo de modelo de dados abaixo, crie um banco de dados relacional contendo as tabelas, chaves e definições necessárias:

Modelo Pessoa:

•	id - inteiro, autoincremento e chave primária
•	nome - texto limitado a 255 caracteres e obrigatório
•	nome_mae - texto limitado a 255 caracteres e obrigatório
•	nome_pai - texto limitado a 255 caracteres e opcional
•	cep - texto limitado a 8 caracteres e obrigatório
•	data_nascimento - data e obrigatória
•	data_cadastro - data e obrigatória
•	data_edicao - data e obrigatória

Modelo Anotação:

•	id - inteiro, autoincremento e chave primária
•	id_pessoa - inteiro, chave estrangeira é obrigatória
•	titulo - texto limitado a 255 caracteres e obrigatório
•	descricao - texto limitado a 2000 caracteres e opcional
•	data_cadastro - data e obrigatória
•	data_edicao - data e obrigatória

2 - Crie os endpoints para operações de CRUD para cada modelo considerando:

•	Os campos data_cadastro e data_edicao devem ser preenchidos automaticamente, sem possibilidade do usuário enviar esses dados no payload do 		   endpoint.
•	Os campos data_cadastro devem ser preenchidos automaticamente no insert e não podem mais ser alterados.
•	Os campos data_edicao devem ser preenchidos automaticamente em cada update.
•	O campo CEP, ao ser persistido no insert ou update, deve ser consultado em uma API externa para ser validado. Caso o CEP não seja válido 		 (não localizados dados na API externa), o resultado dos endpoints de Insert ou Update devem apontar um erro no payload no campo cep e não 		   prosseguir com a operação no banco de dados. Utilize esta API para validar os CEPs: https://viacep.com.br/
•	No endpoint de Retrieve, o modelo localizado deve ser completado com dados do endereçamento baseado no CEP persistido. Mais uma vez, 			consulte o CEP na API acima indicada e adicione um atributo no modelo nomeado de 'endereco' que deve conter a resposta da API de CEP 			consultada.

Sobre o status das respostas dos endpoints:

•	200 em caso de sucesso
•	400 em caso de erro de validação no payload
•	404 em caso de registro não localizado
•	500 em caso de erro

Sobre o corpo das respostas dos endpoints:

•	Insert e Update - objeto salvo
•	Retrieve - objeto pesquisado
•	Delete - booleano simbolizando sucesso da operação

3 - Criar nível de proteção por token para a API, considerando:

• As requisições devem ser feitas com um token no cabeçalho da requisição.
• Token precisa ser validado, caso inválido a API deve retornar uma resposta com status 403

4 - Criar documentação do tipo openapi v3 com Swagger para os endpoints e especificações acima

5 - Criar teste automatizados para os endpoints criados

Envio do teste

Ao finalizar, deverá ser enviado o link do repositório e do sistema em produção, no caso de ter feito o deploy, pelo seguinte formulário: https://forms.gle/Cd2dqSe5iFuVCyod7

Avaliação

Irá ser avaliado:

  • Seu conhecimento técnico e criatividade;
  • Sua habilidade para resolver problemas de forma simples e eficiente;
  • Boas práticas de código.

Boa sorte!

Equipe #roga_rocks

teste-backend-nodejs-pleno's People

Contributors

rafaelgaiaduarte avatar

Stargazers

Lucas Alencar Miranda avatar Luiz Pires - Ranzinza 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.