API RESTful para gerenciamento de agendamentos online, desenvolvida em Java com Spring Boot, seguindo princípios de Arquitetura Limpa, com foco em segurança, manutenibilidade e prontidão para produção.
O projeto é monolítico, porém bem estruturado em camadas, utilizando JWT para autenticação, RBAC (Role-Based Access Control) para autorização, PostgreSQL como banco de dados e Swagger/OpenAPI para documentação interativa.
- Java 17+
- Spring Boot
- Spring Web
- Spring Security
- Spring Data JPA
- JWT (JSON Web Token)
- RBAC (Controle de Acesso por Papéis)
- PostgreSQL
- Swagger / OpenAPI
- Maven
Embora seja um projeto monolítico, a aplicação segue conceitos de Arquitetura Limpa, separando responsabilidades e facilitando manutenção e evolução.
-
Controller (API Layer) Responsável por receber as requisições HTTP e retornar as respostas.
-
Service (Use Cases / Business Rules) Contém as regras de negócio e orquestra os fluxos da aplicação.
-
Domain / Model Entidades e objetos de domínio.
-
Repository (Persistence Layer) Comunicação com o banco de dados utilizando Spring Data JPA.
-
Security Implementação de autenticação JWT e autorização baseada em roles (RBAC).
- Autenticação baseada em JWT
- Token gerado após login válido
- Token deve ser enviado no header:
Authorization: Bearer <token>O acesso aos endpoints é controlado por roles, garantindo que cada usuário execute apenas ações permitidas.
Exemplo de roles:
ROLE_ADMINROLE_USER
As permissões são aplicadas via Spring Security e anotações como:
@PreAuthorize("hasRole('ADMIN')")A API é totalmente documentada utilizando Swagger/OpenAPI, permitindo testar os endpoints diretamente pelo navegador.
📌 Acesse:
http://localhost:8080/swagger-ui.html
ou
http://localhost:8080/swagger-ui/index.html
- Java 17+
- Maven
- PostgreSQL
Configure o application.yml ou application.properties:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/agendamentos
username: postgres
password: postgres
jpa:
hibernate:
ddl-auto: update
show-sql: true
jwt:
secret: sua_chave_secreta
expiration: 86400000mvn clean install
mvn spring-boot:runA aplicação estará disponível em:
http://localhost:8080
- Cadastro e autenticação de usuários
- Geração e validação de JWT
- Controle de acesso por roles (RBAC)
- Gerenciamento de agendamentos
- Integração com banco de dados PostgreSQL
- Documentação automática com Swagger
Os endpoints podem ser testados via:
- Swagger UI
- Postman / Insomnia
Lembre-se de incluir o JWT no header para endpoints protegidos.
- Cache com Redis
- Refresh Token
- Dockerização
- Monitoramento com Actuator + Prometheus
- Migração para arquitetura de microsserviços
Desenvolvido por Pedro De Almeida Peixoto 🚀
Se este projeto te ajudou, deixe uma ⭐ no repositório!