Uma API REST robusta para sistema de reserva de mesas de restaurante, construída com Java 21 e Spring Boot 3.
- Gerenciamento de Usuários: Registro (o primeiro usuário vira SUPER ADMIN), Login, Autenticação JWT.
- Gerenciamento de Mesas: Criar mesas (apenas Admin), Buscar mesas disponíveis por capacidade.
- Reservas: Reservar mesas, prevenção de reserva dupla (janelas de 2 horas), Cancelamento.
- Segurança: Controle de Acesso Baseado em Cargos (RBAC), Criptografia de senha BCrypt, JWT.
- Arquitetura: Domain-Driven Design (DDD), Arquitetura em Camadas, Código Limpo.
- Linguagem: Java 21
- Framework: Spring Boot 3.4.1
- Banco de Dados: PostgreSQL
- Segurança: Spring Security + JWT
- Ferramentas: Maven, Hibernate
Siga estes passos simples para iniciar a aplicação na sua máquina:
Certifique-se de ter instalado:
- Java 21
- Maven (opcional, pois o projeto tem o wrapper
mvnw) - PostgreSQL instalado e rodando
- Abra seu gerenciador de banco de dados (pgAdmin, DBeaver, ou terminal).
- Crie um banco de dados chamado
reservation_db. - Abra o arquivo
src/main/resources/application.propertiese coloque sua senha:spring.datasource.username=postgres spring.datasource.password=SUA_SENHA_AQUI
Abra o terminal na pasta do projeto e rode:
No Linux/Mac:
./mvnw spring-boot:runNo Windows:
mvnw.cmd spring-boot:runAguarde até ver a mensagem de sucesso no terminal. A API estará rodando em http://localhost:8080.
Você pode usar ferramentas visuais como Postman ou Insomnia para testar os endpoints.
Autenticação:
POST /api/auth/register- Criar conta (Envia JSON com username, email, password)POST /api/auth/login- Fazer login
Mesas (Precisa estar logado):
GET /api/tables- Listar todas as mesasPOST /api/tables- Criar mesa (Só Admin)
Reservas (Precisa estar logado):
POST /api/reservations- Fazer reservaGET /api/reservations/my-reservations- Ver minhas reservas
O primeiro usuário que você registrar será automaticamente ADMIN. Todos os outros serão usuários normais.