API RESTful para gerenciamento e agendamento de serviços, desenvolvida em Java 21 utilizando Spring Boot e banco de dados em memória H2.
O Appointment Booking Backend é um sistema backend projetado para gerenciar agendamentos de serviços. A aplicação permite realizar o cadastro de novos agendamentos, consultar agendamentos filtrados por data, atualizar informações existentes e remover agendamentos.
- Java 21
- Spring Boot 3
- Spring Web (REST Controllers, Jackson)
- Spring Data JPA (Hibernate ORM)
- H2 Database (Banco de dados relacional em memória)
- Lombok (Produtividade e redução de código boilerplate)
- Apache Maven (Gerenciador de dependências e build)
A arquitetura segue uma estrutura em camadas limpa e bem definida:
src/main/java/com/java/appointment_booking/
├── AppointmentBookingApplication.java
├── controller/
│ └── AgendamentoController.java
├── infrastructure/
│ ├── entity/
│ │ └── AgendamentoEntity.java
│ └── repository/
│ └── AgendamentoRepository.java
└── service/
└── AgendamentoService.java
- Java JDK 21 instalado
- Apache Maven (ou utilizar o wrapper
./mvnwincluso no projeto) - IDE de sua preferência (Eclipse, IntelliJ IDEA, VS Code) ou Terminal
-
Clonar o repositório:
git clone https://github.com/JBEstevan/appointment-booking-backend.git cd appointment-booking-backend -
Compilar e executar a aplicação:
- Via Terminal (PowerShell / Command Prompt):
.\mvnw.cmd spring-boot:run
- Via Terminal (Bash / Linux / macOS):
./mvnw spring-boot:run
- Via IDE (Eclipse / IntelliJ):
Execute a classe principal
AppointmentBookingApplication.javacomo Java Application.
- Via Terminal (PowerShell / Command Prompt):
-
Verificar a execução: A aplicação estará rodando na porta 8080:
http://localhost:8080
O projeto está configurado com o banco de dados H2 em memória. Você pode acessar o painel visual do banco durante a execução da aplicação:
- URL:
http://localhost:8080/h2-console - JDBC URL:
jdbc:h2:mem:agendamentos-db - User Name:
jbe - Password: (deixe em branco)
- Rota:
POST /agendamentos - Headers:
Content-Type: application/json - Body (JSON):
{ "servico": "Corte de Cabelo", "profissional": "Carlos Silva", "dataHoraAgendamento": "2026-08-23T15:00:00", "cliente": "Maria Oliveira", "telefoneCliente": "11999998888" } - Resposta Sucesso:
201 Createdou202 Accepted
- Rota:
GET /agendamentos - Query Params:
data: Data no formatoYYYY-MM-DD(ex:2026-08-23)
- Exemplo:
GET /agendamentos?data=2026-08-23 - Resposta Sucesso:
200 OK(retorna uma lista de agendamentos do dia).
- Rota:
PUT /agendamentos - Query Params:
cliente: Nome do clientedataHoraAgendamento: Data/hora original no formato ISOYYYY-MM-DDTHH:mm:ss
- Exemplo:
PUT /agendamentos?cliente=Maria Oliveira&dataHoraAgendamento=2026-08-23T15:00:00 - Body (JSON): Dados atualizados do agendamento
- Resposta Sucesso:
200 OKou202 Accepted
- Rota:
DELETE /agendamentos - Query Params:
cliente: Nome do clientedataHoraAgendamento: Data e hora do agendamento
- Exemplo:
DELETE /agendamentos?cliente=Maria Oliveira&dataHoraAgendamento=2026-08-23T15:00:00 - Resposta Sucesso:
204 No Content
Este projeto está sob a licença MIT.