RentalX é uma API responsável pela gerenciamento de alugueis de carros. Esse projeto foi construido durante o Bootcamp Ignite da Rocketseat.
RentalX é uma API que foi construida durante o Bootcamp Ignite da Rocketseat com o objetivo de introduzir os principais conceitos de desenvolvimento de código e as tecnologias mais utilizadas no mercado atualmente no que se diz respeito do desenvolvimento backend com NodeJS.
A ideia é desenvolver uma aplicação que permita o gerenciamento de alugueis de carros, permitindo aos usuários à cadastrar veiculos novos no sistema, informações sobre clientes, permitir o aluguel do carros, receber o carro devolvido, dentro outros.
O desenvolvimento da aplicação se sustenta com base nos princípios da arquitetura limpa e do SOLID. Isso foi algo bastante abordados duantes às aulas é possivel ver sua presença na construção de casos de uso, entidades, e a aplicação do padrão de repositório.
- Deve ser possível cadastrar um novo carro.
- Não deve ser possível cadastrar um carro com uma placa já existente.
- Não deve ser possível cadastrar um carro se o usuário não for administrador *.
- Deve se cadastrar um carro com disponibilidade por padrão.
- Deve ser possível listar todos os carros disponíveis.
- Deve ser possivel listar todos os carros disponíveis pelo nome da categoria.
- Deve ser possivel listar todos os carros disponíveis pelo nome da marca.
- Deve ser possivel listar todos os carros disponíveis pelo nome do carro (modelo).
- Deve ser possível listar os carros mesmo se o usuário não estiver logado.
- Deve ser possivel cadastrar especificações para um carro.
- Deve ser possivel listar todas as especificações.
- Deve ser possível listar todos os carros
- Não deve ser possivel cadastrar uma especificação para um carro não cadastrado.
- Não deve ser possível cadastrar uma especificação já existente para um mesmo carro.
- Não deve ser possível cadastrar um carro se o usuário não for administrador.
- Deve ser possível cadastrar a imagem do carro.
- Deve ser possível listar todos os carros, independente da disponibilidade.
- Utilizar o Multer para upload dos arquivos.
- Não deve ser possível cadastrar uma imagem do carro se o usuário não for administrador.
- Deve ser possível cadastrar mais de uma imagem para um mesmo carro.
- Deve ser possível cadastrar um aluguel.
- Não deve ser possível cadastrar um aluguel com duração menor que 24 horas.
- Não deve ser possível cadastrar um novo aluguel caso já exista um aberto para um mesmo usuário.
- Não deve ser possível cadastrar um novo aluguel caso já exista um aberto para um mesmo carro.
- NodeJS
- Typescript
- Express
- ts-node-dev
- yarn
- TypeORM
- Docker
- eslint
- prettier
Atualmente, o projeto está rodando no docker e não possui ainda associação com banco de dados. Portanto, após clonar esse repositório, deve-se criar o container usando o docker-compose antes de rodar a aplicação.
# Clonar o repositório
$ git clone https://github.com/ianmateusES/rentalx-nodejs-typescript.git rentalx
# Entrando no projeto
$ cd rentalx
# Criar a imagem
$ docker build -t rentalx .
# Rodar aplicação em modo de desenvolvimento
$ docker compose up
Os endpoints da API estão bem documentados na interface do swagger. Para verificar, basta executar a API e acessar.
http://localhost:3333/api-docs