Enterprise-grade Room Reservation System built with Java 21 and Spring Boot 3. Desenvolvido com foco em alta disponibilidade, integridade de dados e segurança, simulando os desafios técnicos de uma Fintech.
SyncSpace resolve o problema de agendamentos simultâneos em ambientes corporativos. O diferencial deste projeto é a implementação de Optimistic Locking para evitar o "Double Booking" (reserva duplicada) e uma arquitetura que isola totalmente as regras de negócio.
Para garantir a consistência do sistema, as seguintes regras foram implementadas:
- Prevenção de Conflitos: O sistema utiliza controle de versão JPA para impedir que dois usuários reservem a mesma sala no exato milissegundo.
- Validação Temporal: Reservas não podem ser feitas em horários retroativos.
- Segurança por Camada: Endpoints de administração são protegidos via JWT, garantindo que apenas usuários autorizados gerenciem as salas.
- ⛑ Concurrency Control — Implementação de
@Versionpara integridade de dados. - 🔐 Stateless Security — Autenticação robusta com Spring Security e JWT.
- 🐳 Infrastructure as Code — Ambiente 100% conteinerizado com Docker Compose.
- 📐 Domain-Driven Design (Lite) — Camadas de serviço puras, isolando a lógica da infraestrutura.
- 📖 Swagger UI — Documentação interativa disponível em
/swagger-ui.html.
| Método | Endpoint | Descrição | Acesso |
|---|---|---|---|
POST |
/api/auth/login |
Autenticação e geração de Token | Público |
GET |
/api/rooms |
Lista todas as salas disponíveis | Público |
POST |
/api/reservations |
Cria uma nova reserva | Autenticado |
DELETE |
/api/rooms/{id} |
Remove uma sala do sistema | Admin |
# Clone e entre na pasta
git clone [https://github.com/kalebzaki4/room-reservation-api](https://github.com/kalebzaki4/room-reservation-api)
cd room-reservation-api
# Suba todo o ecossistema (App + DB)
docker-compose up -d🧪 Qualidade de Código
O projeto conta com uma suíte de testes focada no caminho feliz e em casos de erro (Edge cases):
Testes Unitários: JUnit 5 e Mockito.
Validação de DTOs: Bean Validation para garantir que dados sujos não cheguem ao banco.
👨💻 Autor Kaleb Zaki