/park-api

Sistema de gerenciamento de vagas de estacionamento. Possui recursos como autenticação de usuários, cadastrar e gerenciar informações de usuários, com perfis de cliente e administrador. Ele também permite consultas específicas, como listar usuários cadastrados, atualizar senhas, e realizar operações de check-in e check-out de veículos estacionados.

Primary LanguageJavaMIT LicenseMIT

Park API

Sistema de gerenciamento de vagas de estacionamento. Possui recursos como autenticação de usuários, cadastrar e gerenciar informações de usuários, com perfis de cliente e administrador. Ele também permite consultas específicas, como listar usuários cadastrados, atualizar senhas, e realizar operações de check-in e check-out de veículos estacionados. Além disso, o sistema gera relatórios de estacionamentos. Desenvolvido com tecnologias como Java e o framework Spring, sendo sistema robusto, permitindo persistência em banco de dados MySQL, com cobertura de testes, autenticação usando o Spring Security e token JWT.

Flow

📒 Índice

📃 Descrição

Sistema de gerenciamento de vagas de estacionamento. Possui recursos como autenticação de usuários, cadastrar e gerenciar informações de usuários, com perfis de cliente e administrador. Ele também permite consultas específicas, como listar usuários cadastrados, atualizar senhas, e realizar operações de check-in e check-out de veículos estacionados. Além disso, o sistema gera relatórios de estacionamentos. Desenvolvido com tecnologias como Java e o framework Spring, sendo sistema robusto, permitindo persistência em banco de dados MySQL, com cobertura de testes utilizando JUnit, autenticação usando o Spring Security, token JWT, encriptação de senhas utilizando BCrypt e documentação desenvolvida pelo Swagger.

📌 Requisitos Funcionais

  • Cadastramento de um usuário
  • Listar todos os usuário cadastrados
  • Atualizar a senha de um usuário especifico
  • Associar o usuário ao perfil de cliente
  • Consultar as informações de um cliente especifico
  • Consultar as informações de todos os cliente
  • Cadastrar vaga de estacionamento
  • Consultar as informações de uma vaga especifica
  • Realizar check-in de um veiculo em uma vaga
  • Localizar um veiculo estacionado em uma vaga, informando o numero do recibo
  • Realizar o check-out do cliente sobre um veiculo estacionado, informando o numero do recibo
  • Listar todos os registros de estacionamento de um cliente, informando o CPF
  • Cliente podendo visualizar todos os registros de seus estacionamentos

Features

  • Autenticação de usuário utilizando JWT Token
  • Exibição de informações do próprio usuário em sessão ativa
  • Adicionando mapeamento de CORS
  • Modelo de domínio complexo
  • Projeção com SQL nativo
  • Geração de relatórios utilizando Jasper Reports
  • Cobertura de testes

💻 Tecnologias

  • Java
  • Spring
  • Spring Web
  • Spring Reactive Web
  • Spring Boot DevTools
  • Spring Data JPA
  • Spring Bean Validation
  • JUnit
  • JWT
  • BCrypt
  • Swagger
  • MySQL
  • H2 Database
  • Jasper Reports

📍 Endpoints

Método Endpoint Resumo Autenticação Role
POST /auth Responsável por autenticar o usuário, gerando o Bearer Token JWT Sim *
POST /users Responsável por cadastramento de um usuário Não *
GET /users/:id Responsável por consultar as informações de um usuário especifico, informando o ID Sim ADMIN, CLIENT
GET /users Responsável por listar todos os usuário cadastrados Sim ADMIN
PATCH /users/:id Responsável por atualizar a senha de um usuário especifico, informando o ID Sim ADMIN, CLIENT
POST /clients Responsável por associar o usuário ao perfil de cliente Sim CLIENT
GET /clients/:id Responsável por consultar as informações de um usuário especifico com perfil de cliente, informando o ID Sim ADMIN
GET /clients Responsável por listar todos os usuários com perfil de cliente Sim ADMIN
GET /clients/details Responsável por listar as informações do usuário em sessão ativa com perfil de cliente Sim CLIENT
POST /parkings Responsável por cadastrar vaga de estacionamento Sim ADMIN
GET /parkings/:code Responsável por consultar as informações de uma vaga especifica, informando o código Sim ADMIN
POST /parking-lots/check-in Responsável por realizar check-in de um veiculo em uma vaga Sim ADMIN
GET /parking-lots/:receipt Responsável por localizar um veiculo estacionado em uma vaga, informando o numero do recibo Sim ADMIN, CLIENT
GET /parking-lots/check-out/:receipt Responsável por realizar o check-out do veiculo de um usuário com perfil de cliente sobre o veiculo estacionado, informando o numero do recibo Sim ADMIN
GET /parking-lots/cpf/:cpf Responsável por listar todos os registros de estacionamento de um cliente, informando o CPF Sim ADMIN
GET /parking-lots Responsável por listar todos os registros de estacionamento do usuário em sessão ativa com perfil de cliente Sim CLIENT
GET /reports Responsável por gerar relatório de estacionamentos do usuário em sessão ativa com perfil de cliente, utilizando o Jasper Reports Sim CLIENT
GET /swagger-ui/index.html Responsável por servir a documentação dos recursos da API Não *
GET /h2-console Responsável por acesso ao H2 Database Sim *

🚀 Instalação

  # Clone este repositório:
  $ git clone https://github.com/CleilsonAndrade/park-api.git
  $ cd ./park-api

   # Instalar as dependências:
  $ mvn clean install

  # Executar:
  $ mvn spring-boot:run

📝 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Feito com 💜 by CleilsonAndrade