Uma API REST moderna e robusta para gerenciamento completo de estacionamento, desenvolvida com as melhores práticas e tecnologias atuais do ecossistema Java.
Desenvolver uma API segura, eficiente e bem documentada que facilite a integração com front-ends e forneça gerenciamento completo de estacionamento, incluindo controle de usuários, clientes, vagas e operações de entrada/saída de veículos.
- Java 17 - Versão LTS com recursos modernos
- Spring Boot - Framework principal para desenvolvimento rápido
- Jakarta EE - Especificações empresariais modernas
- Spring Data JPA - Abstração para persistência de dados
- Spring MVC - Framework web RESTful
- Spring Security - Segurança e autenticação
- Lombok - Redução de boilerplate code
- Maven - Gerenciamento de dependências e build
- Git - Controle de versão
- JPA/Hibernate - ORM para mapeamento objeto-relacional
- Suporte para múltiplos SGBDs através do Spring Data JPA
- ✅ Cadastro de novos usuários (público)
- ✅ Consulta de usuário por ID (restrito a administradores)
- ✅ Listagem de todos os usuários (restrito a administradores)
- ✅ Alteração de senha (usuário autenticado)
- ✅ Sistema de roles (
ROLE_ADMIN
,ROLE_CLIENTE
)
- ✅ Controle de acesso por perfis de usuário
- ✅ Registro automático de data/hora de criação
- ✅ Registro de última modificação
- ✅ Rastreamento do usuário responsável pelas operações
- ✅ Testes de integração end-to-end
- ✅ Validação dos fluxos principais da aplicação
- Módulo de Clientes - Gestão completa de clientes
- Gestão de Vagas - Controle de vagas disponíveis/ocupadas
- Controle de Estacionamento - Registro de entrada/saída de veículos
- Relatórios - Dashboard e relatórios gerenciais
- Documentação da API - Swagger/OpenAPI
demo-park-api/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/carvalho/demo_park_api/
│ │ │ ├── config/ # Configurações
│ │ │ ├── entity/ # Entidades JPA
│ │ │ ├── exception/ # Gerenciamento de exceções
│ │ │ ├── repository/ # Repositórios Spring Data
│ │ │ ├── service/ # Lógica de negócio
│ │ │ ├── web/
│ │ │ │ ├── controller/ # Controllers REST
│ │ │ │ ├── dto/ # Data Transfer Objects
│ │ │ │ │ └── mapper/ # Conversão de tipos
│ │ │ │ └── exception/ # Gerenciamento de exceções
│ │ │ └── Main # Ponto de partida
│ │ └── resources/
│ │ └── application.properties
│ ├── test/ # Testes automatizados
│ │ ├── java/
│ │ │ └── com/carvalho/demo_park_api/
│ │ │ ├── config/ # Configurações
│ │ │ └── Classe de teste # Entidades JPA
│ │ └── resources/
│ │ ├── sql/
│ │ │ └── usuario/ # Construção de métodos para testes
│ │ └── application.properties
├── pom.xml # Dependências do Maven
└── README.md
POST /api/v1/usuarios
- Criar usuárioGET /api/v1/usuarios/{id}
- Buscar usuário por IDGET /api/v1/usuarios
- Listar todos os usuáriosPATCH /api/v1/usuarios/{id}
- Alterar senha
- Java 17 ou superior
- Maven 3.6+
- IDE de sua preferência (IntelliJ IDEA, Eclipse, VS Code)
- Banco de dados configurado (MySQL, PostgreSQL, H2, etc.)
-
Clone o repositório
git clone <url-do-repositorio> cd demo-park-api
-
Configure o banco de dados Edite o arquivo
src/main/resources/application.properties
:spring.datasource.url=jdbc:mysql://host:port/demo_park spring.datasource.username=seu_usuario spring.datasource.password=sua_senha
-
Execute a aplicação
# Via Maven ./mvnw spring-boot:run # Ou via IDE # Execute a classe principal com @SpringBootApplication
-
Acesse a API
- URL base:
http://localhost:8080/api/v1
- URL base:
- Configurado para timezone America/Sao_Paulo ( ou desejado )
- Locale pt_BR para formatação de datas e números ( ou desejado )
- Pool de conexões otimizado
- Migração automática via JPA/Hibernate
- Scripts de dados iniciais
- DB_URL=jdbc:mysql://host:port/demo_park
- DB_USERNAME=usuario
- DB_PASSWORD=senha
# Via Maven
./mvnw test
# Ou via IDE
# Basta clicar no botão "Run Test" que fica no topo da classe a ser testada
# ou ao lado da annotation "@Test" para um teste específico
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature
) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature'
) - Push para a branch (
git push origin feature/MinhaFeature
) - Abra um Pull Request
Documentação atualizada em: 08/08/2025 Versão atual da API: 1.0.0