A RentX API é uma aplicação destinada à gestão e controle de aluguel de veículos. Desenvolvida para proporcionar uma experiência eficiente e segura, a API oferece uma variedade de funcionalidades que abrangem desde o cadastro de usuários até a gestão completa de reservas e devoluções.
A RentX API atende a uma série de requisitos funcionais e não funcionais, garantindo a integridade dos dados, a segurança das transações e a experiência do usuário. Além disso, diversas regras de negócio são implementadas para manter a consistência e o bom funcionamento da aplicação.
Cadastro de usuário
- Deve ser possível realizar o cadastro de um novo usuário. Cadastro de categoria
- Deve ser possível cadastrar uma categoria para um veículo. Cadastro de carro
- Deve ser possível cadastrar um novo carro. Listagem de carros
- Deve ser possível listar todos os carros disponíveis.
- Deve ser possível listar todos os carros disponíveis pelo nome da categoria.
- Deve ser possível listar todos os carros disponíveis pelo nome da marca.
- Deve ser possível listar todos os carros disponíveis pelo nome do carro. Cadastro de Especificação no carro
- Deve ser possível cadastrar uma especificação para um carro. Cadastro de imagens do carro
- Deve ser possível cadastrar a imagem do carro. Aluguel de carro
- Deve ser possível cadastrar um aluguel. Devolução de carro
- Deve ser possível realizar a devolução de um carro alugado Listagem de alugueis para usuário
- Deve ser possível realizar a busca de todos os alugueis para o usuário Recuperação de senha
- Deve ser possível que o usuário consiga recuperar a senha informando o e-mail de registro.
- O Usuário deve receber um e-mail com o passo a passo para a recuperação da senha.
- O Usuário deve conseguir cadastrar uma nova senha.
- O usuário com permissão de admin deve ser criado via seed.
- O banco de dados deve ser PostgreSQL. Cadastro de imagens do carro
- Utilizar o multer para upload dos arquivos de imagem.
Cadastro de usuário
- Não deve ser possível realizar o registro de um usuário que já tenha o email utilizado cadastrado.
- A senha do usuário deve estar criptografada Cadastro de categoria
- Um veículo só pode ter uma categoria vinculada a ele. Cadastro de carro
- Não deve ser possível cadastrar um carro com uma placa já cadastrada.
- O carro deve ser cadastrado, por padrão, com a propriedade available como true.
- O usuário responsável pelo cadastro deve ser um usuário adminstrador.* Listagem de carros
- O usuário não precisa estar autenticado no sistema para listar os carros. Cadastro de Especificação no 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 que já esteja cadastrada em um veículo.
- O usuário responsável pelo cadastro de especificação deve ser um usuário adminstrador. Cadastro de imagens do carro
- O usuário deve poder cadastrar mais de uma imagem para o mesmo carro.
- O usuário responsável pelo cadastro das imagens deve ser um usuário adminstrador. Alugel de carro
- O usuário deve ser autenticado na aplicação para fazer uma reserva.
- O aluguel deve ter duração mínima 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.
- Ao realizar o aluguel, o status do carro deverá ser alterado para indisponível. Devolução de carro
- Se o carro for devolvido com menos de 24 horas, deverá ser cobrado a 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 em atraso.
- Caso haja multa, deverá ser somado ao total do aluguel.
- O usuário deve estar logado e autenticado para realizar a devolução. Listagem de alugueis para usuário
- O usuário deve estar logado na aplicação Recuperação de senha
- O usuário precisa informar a uma nova senha
- O link enviado para recuperação deve expirar em 3 horas
Para executar este projeto localmente, siga as etapas abaixo:
# Clone o repositório
git clone https://github.com/RenanFachin/RS_IG_RentalXAPI.git
# Acesse a pasta do projeto
# Instale as dependências
npm install
# Execute a aplicação em ambiente de desenvolvimento
npm run dev
Subindo um container de um database com postgres
docker-compose up
Criando as tabelas (Rodando as migrations)
npm run typeorm migration:run
Rodando o seed para criar um usuário com permissão de admin
npm run seed:admin
Para acessar a documentação, é necessário iniciar o servidor e após isto acessar http://localhost:3333/api-docs