Este é um desafio para desenvolver uma API RestFul para listar informações da API SpaceX-API.
Vídeo de apresentação do projeto
As seguintes ferramentas foram usadas na construção do projeto:
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js, PostgreSQL e Docker (caso queira iniciar com o docker). Além disto é bom ter um editor para trabalhar com o código como VSCode.
Será necessário clonar o projeto para sua máquina local,rodando.
git clone https://github.com/samuelsankys/back-space-x.git``
Variáveis de Ambiente
Antes de iniciar, você precisará realizar duas cópias do arquivo .env.example
e renomeá-lo para .env
e .env.development
. Nesses arquivos estarão as variáveis de ambientes do modo de desenvolvimento e de produção. No arquivo .env.example
tem as informações para rodar o projeto localmente.
Já para rodar com docker-compose, será necessário alterar no .env
de localhost:5432
para postgres:5432
o dado de DATABASE_URL.
- Instale as dependências com
npm install
- Certifique que o Postgres está funcionando e rode.
npm run migrate
Isso irá construir as tabelas necessárias para rodar nosso projeto.
- Por fim, inicialize o servidor com
npm run dev
para o modo de desenvolvimento.
Antes de inicializar certifiquesse de parar algum container que contenha o postgres rodando. Após isso, para inicializar o servidor e banco de dados rode:
docker-compose up --build
A documentação das rotas poderá ser visualizada após inicializado o servidor no endpoint http://localhost:3563/api-docs/
.
- Desenvolver rotas
-
[GET] / -
[GET] /launches -
[GET] /launches/stats
-
- Alimentar o banco de dados com um script que armazena os dados dos lançamentos da SpaceX API.
- Desenvolver um CRON para ser executado diariamente às 9h e armazenar os novos lançamentos.
- Descrever a documentação da API utilizando o conceito de Open API 3.0;
- Configurar Docker no Projeto.
- Configurar um sistema de alerta se houver alguma falha durante a sincronização dos lançamentos;
- Escrever Unit Tests para os endpoints da API;
- Aplicação de padrões Clean Code.
- Funções desacopladas.
- Validação de chamadas assíncronas para evitar travamentos.
- Commits seguindo o padrão de convensão.
- Fluxo de git utilizando boas práticas auxiliado pelo gitflow.
- Eslint.
- Preparar ambiente de desenvolvimento, configurando o servidor, eslint, prettier e orm.
- Entender a documentação e começar a testar requisições para os endpoints e suas respostas da API.
- Planejar como poderia ser organizado os dados enviado da API.
- Criar função de carregamento da API para o banco de dados.
- Modificar os modelos de acordo com os dados enviados pelas api(Datatype, null, etc)
- Criar uma função de carregamento de dados assim que o servidor fosse iniciado. (Desta forma ao baixarem meu projeto e colocar para rodar ele já estaria com os dados).
- Criar os Jobs fazendo uma verificação de um novo dado que se chama sequence. (Auxilia na sequencia de inserção e quantidade de dados). Para inserir faço uma verificação de quantos dados tem a mais, verifico se o identificador existe e se não existir insiro somente os valores adicionais.
- Criar rotas com os dados no banco. Após alguns testes senti a necessidade de voltar nos modelos de dados para inserir uma nova tabela.
- Documentar as rotas
- Criar arquivo Docker
- Realizar os testes com Jest
- Criar sistema de notificação utilizando o discord para notificar se houve algum erro ao realizar os jobs.
This is a challenge by Coodesh