Giter VIP home page Giter VIP logo

rs_ig_rentxapi's Introduction

RentX API

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.

Análise de Requisitos

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.

Requisitos Funcionais

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.

Requisitos Não Funcionais

  • 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.

Regra de negócio

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

Configuração do Projeto

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

Documentação do projeto

Para acessar a documentação, é necessário iniciar o servidor e após isto acessar http://localhost:3333/api-docs

rs_ig_rentxapi's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.