Back-end Challenge šŸ… 2021 - Space Flight News

O objetivo do desafio Ʃ construir uma API Restful com as melhores prƔticas de desenvolvimento, baseada na API Space Flight News.

https://api.spaceflightnewsapi.net/v3/documentation

Conceitos abordados:

  • Utilizado MongoDB para registro dos artigos baixados/sincronizados com a API Space Flight News;
  • CriaĆ§Ć£o de rotas (CRUD) para buscar, criar, atualizar e deletar artigos;
  • Desenvolvido script para armazenar artigos da API no banco de dados;
  • Criada funĆ§Ć£o CRON para rodar o script de sincronizaĆ§Ć£o do banco de dados diariamente Ć s 9h;
  • Configurado ambiente Docker para execuĆ§Ć£o do projeto;
  • Criado sistema de simulaĆ§Ć£o de alerta via email em caso de falha na execuĆ§Ć£o do script de sincronizaĆ§Ć£o dos artigos;
  • Elaborado documentaĆ§Ć£o da API utilizando o conceito de Open API 3.0;

Em andamento:

[ ] Escrever Unit Tests para os endpoints da API.
Escrito testes das rotas do tipo GET.


šŸš€ Como executar o projeto:

  1. FaƧa um clone do repositĆ³rio:

git clone https://github.com/sergiofdf/challenge_backend_coodesh.git

  1. Abra a pasta do projeto

cd pasta-projeto

  1. Execute o comando para criaĆ§Ć£o do container e execuĆ§Ć£o do cĆ³digo (necessĆ”rio ter o Docker e Docker Compose instalado no PC):

docker-compose up


šŸš€ Como rodar testes dos End-Points:

  1. Executar as etapas para execuĆ§Ć£o do projeto apresentadas acima.

  2. Exectuar o seguinte comando para iniciar testes: yarn test


šŸ“˜ DocumentaĆ§Ć£o da API (Open API - Swagger)

ApĆ³s executar o projeto, carregue sua documentaĆ§Ć£o e utilize/teste a API atravĆ©s da documentaĆ§Ć£o feita com o swagger:

http://localhost:3001/api-docs/#/


šŸ›  Ferramentas/frameworks utilizados no desenvolvimento:


šŸ—ŗ Rotas criadas

  • [GET]/: Retorna um Status: 200 e uma Mensagem "Back-end Challenge 2021 šŸ… - Space Flight News"

  • [GET]/articles/: Lista todos os artigos da base de dados, utilizar o sistema de paginaĆ§Ć£o para nĆ£o sobrecarregar a REQUEST

  • [GET]/articles/{id}: Obter a informaĆ§Ć£o somente de um artigo

  • [POST]/articles/: Adicionar um novo artigo

  • [PUT]/articles/{id}: Atualizar um artigo baseado no id

  • [DELETE]/articles/{id}: Remover um artigo baseado no id


šŸ”„ Ilustrando a documentaĆ§Ć£o e testes com o Swagger

API_documentation1

API_documentation2

API_documentation3

API_documentation4

API_documentation5

API_documentation6


This is a challenge by Coodesh https://lab.coodesh.com/public-challenges/back-end-challenge-2021