Skip to content

API de aluguel de carros - Ignite Trilha Node.js - Rocketseat

Notifications You must be signed in to change notification settings

VictorMello1993/Rentx

Repository files navigation

Cadastro de carros

Requisitos funcionais

  • Deve ser possível cadastrar um novo carro

Regras de negócio

  • Não deve ser possível cadastrar um carro com uma placa já existente.
  • O carro deve ser cadastrado, por padrão, com disponibilidade.
  • O usuário responsável pelo cadastro deve ser um usuário administrador.

Listagem de carros

Requisitos funcionais

  • Deve ser possível listar todos os carros disponíveis.
  • Dever ser possível listar todos os carros disponíveis pelo nome da categoria.
  • Dever ser possível listar todos os carros disponíveis pelo nome da marca.
  • Dever ser possível listar todos os carros disponíveis pelo nome do carro.

Regras de negócio

  • O usuário não precisa estar logado no sistema.

Cadastro de especificação no carro

Requisitos funcionais

  • Deve ser possível cadastrar uma especificação para um carro.

Regras de negócio

  • Não deve ser possível cadastrar uma especificação para um carro não cadastrado.

  • Não deve ser possível cadastrar uma especificação já existente para o mesmo carro

  • O usuário responsável pelo cadastro deve ser um usuário administrador.

Cadastro de imagens do carro

Requisitos funcionais

  • Deve ser possível cadastrar a imagem do carro

Requisitos não funcionais

  • Utilizar o multer para upload dos arquivos.

Regras de negócio

  • O usuário deve poder cadastrar mais de uma imagem para o mesmo carro.
  • O usuário responsável pelo cadastro deve ser um usuário administrador.

Aluguel de carro

Requisitos funcionais

  • Deve ser possível cadastrar um aluguel.

Regras de negócio

  • O aluguel deve ter duração mínima de 24 horas.
  • Não deve ser possível cadastrar um novo aluguel caso já exista um aberto para o mesmo usuário.
  • Não deve ser possível cadastrar um novo aluguel caso já exista um aberto para o mesmo carro.
  • O usuário deve estar logado no sistema.
  • Ao realizar um aluguel, o status do carro deverá ser alterado para indisponível

Devolução de carro

Requisitos funcionais

  • Deve ser possível realizar a devolução de um carro

Regras de negócio

  • Se o carro for devolvido com menos de 24 horas, deverá ser cobrado diária completa.
  • Ao realizar a devolução, o carro deverá ser liberado para outro aluguel.
  • Ao realizar a devolução, o usuário deverá ser liberado para outro aluguel.
  • Ao realizar a devolução, deverá ser calculado o total do aluguel.
  • Caso o horário de devolução seja superior ao horário previsto de entrega, deverá ser cobrado multa proporcional aos dias de atraso
  • O usuário deve estar logado no sistema.
  • Caso haja multa, deverá ser somado ao total do aluguel.

Listagem de algueis para usuário

Requisitos funcionais

  • Deve ser possível realizar a busca de todos os alugueis para o usuário

Regras de negócio

  • O usuário deve estar logado na aplicação

Recuperação de senha

Requisitos funcionais

  • Deve ser possível o usuário recuperar a senha informando o e-mail
  • O usuário deve receber e-mail com o passo a passo para a recuperação de senha
  • O usuário deve conseguir inserir uma nova senha

Regras de negócio

  • O usuário precisa informar uma nova senha
  • O link enviado para a recuperação deve expirar em 3 horas

Conteúdos abordados

  • Construção de uma API
  • 5 princípios SOLID
  • Documentação da API com Swagger
  • Docker
  • Testes unitários e de integração com Jest
  • Construindo banco de dados da API com Typeorm (driver de banco selecionado: Postgres)
  • Modelagem de dados
  • Autenticação e autorização com JWT
  • Refresh token
  • Envio de e-mail utilizando Ethereal e SES da AWS
  • Deploy utilizando serviços da AWS. Foram utilizados S3, EC2, SES, IAM e Route 53
  • Pipeline CI/CD utilizando Github Actions
  • Segurança utilizando Redis e Rate Limiter para evitar ataques DDoS
  • Gerenciamento de erros utilizando Sentry

Extras

  • Serverless
  • Explorando um pouco do Prisma

Link dos enpoints

Insomnia

Run in Insomnia}

Postman

Run in Postman