- ESLint e Prettier
- commitlint
- husky
- Express
- TypeScript
- ts-node-dev
- multer
- CSV Parse
- Swagger UI Express
- Docker
- Docker Compose
- TypeORM
- TSyringe
- bcrypt
- Day.js
- JWT
- Jest
- SuperTest
docker-compose up
docker-compose start
docker logs SERVICE -f
docker-compose stop
docker-compose down
- RF: Requisitos Funcionais;
- RNF: Requisitos Não Funcionais;
- RN: Regras de negócio.
- Deve ser possível cadastro um novo carro.
- Não deve ser possível cadastro um carro com a placa já existente;
- O carro pode padrão, deve ser cadastrado com disponível;
- O usuário responsável pelo cadastro deve ser um administrado.
- Deve ser possível listar todos os carros disponíveis.
- Deve ser possível listar todos os carros disponíveis através do nome da categoria;
- Deve ser possível listar todos os carros disponíveis através do nome da marca;
- Deve ser possível listar todos os carros disponíveis através do nome do carro.
- O usuário não precisa estar autenticado para lista os carros.
- Deve ser possível cadastrar uma especificação para um carro.
- 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 administrado.
- Deve ser possível a imagem do carro;
- Utilizar o multer para envio dos arquivos.
- O usuário deve ser capaz de cadastrar mais de uma imagem para o mesmo carro;
- O usuário responsável pelo cadastro deve ser um administrado.
- Deve ser possível cadastra um aluguel.
- O aluguel deve ter duração minima de 24 hora;
- 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 na aplicação;
- Ao realizar um aluguel, o status do carro deverá ser alterado para indisponível.
- Deve ser possível realizar a devolução de um aluguel.
- Se o carro for devolvido com menos de 24 horas, deverá ser cobrado diário 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 na aplicação;
- Caso haja multa, deverá ser somado ao total do aluguel.
- Deve ser possível realizar a busca de todos os alugueis para o usuário.
- O aluguel deve estar logado na aplicação;
- Deve ser possível o usuário recuperar a senha informando o e-mail;
- O usuário deve receber um e-mail com o passo a passo para a recuperação de senha;
- O usuário deve conseguir inserir uma nova senha.
- O usuário precisa informar um nova senha;
- O link enviado para a recuperação deve expirar em 3 horas.