A API de Cadastro de Cursos é um projeto completo desenvolvido em Spring Boot 3 com autenticação JWT (JSON Web Token) e integração com Auth0.
Ela foi projetada para ser uma base sólida e escalável de backend, aplicando boas práticas de arquitetura REST, segurança, auditoria e tratamento global de exceções.
Essa aplicação é ideal para cenários de cadastro e gerenciamento de faculdades, cursos e técnicos, com controle de usuários e permissões (USER/ADMIN).
-
👤 Cadastro e autenticação de usuários
- Registro e login com senhas criptografadas (BCrypt)
- Geração de token JWT com tempo de expiração configurável
- Perfis de acesso:
USEReADMIN
-
🎓 Gestão de entidades
- CRUD completo de Cursos, Faculdades e Técnicos
- Relacionamentos entre entidades (
Faculdade↔Curso↔Técnico)
-
🔒 Segurança avançada
- Spring Security + JWT + Auth0
- Autenticação stateless (sem sessão)
- Permissões definidas por rota (ex:
/auth/alterRoleapenas para ADMIN)
-
🧾 Auditoria e monitoramento
- Registro automático de todos os acessos via
AccessLoggerFilter - Armazena IP, endpoint, método HTTP, status e timestamp no banco
- Registro automático de todos os acessos via
-
🐳 Containerização com Docker
- Banco de dados PostgreSQL rodando via container
- Configuração pronta em
docker-compose.yml - Facilita o setup e garante portabilidade
| Tecnologia | Descrição |
|---|---|
| Java 21 / OpenJDK 24 | Linguagem base do projeto |
| Spring Boot 3.5.6 | Framework principal de desenvolvimento |
| Spring Security | Implementação da camada de segurança |
| JWT (JSON Web Token) | Autenticação e autorização seguras |
| Auth0 | Integração externa de autenticação (opcional) |
| Spring Data JPA / Hibernate | ORM e persistência de dados |
| PostgreSQL | Banco de dados relacional |
| Docker / Docker Compose | Ambiente containerizado |
| Lombok | Redução de boilerplate no código |
| Swagger / OpenAPI | Documentação automática da API |
src/
├── main/
│ ├── java/digital/rj/apicadastrodecursos/
│ │ ├── Auth/ → Módulo de autenticação (User, Roles, JWT)
│ │ ├── Cursos/ → Módulo de cursos
│ │ ├── Faculdades/ → Módulo de faculdades
│ │ ├── Tecnicos/ → Módulo de técnicos
│ │ ├── infra/ → Exceções, configurações e utilitários
│ │ └── ApiCadastroDeCursosApplication.java
│ └── resources/
│ ├── application.yml
│ └── schema.sql (opcional)
└── test/ → Testes unitários e de integração
- Java 21+
- Maven 3.9+
- Docker + Docker Compose
Crie um arquivo .env na raiz do projeto com suas variáveis:
POSTGRES_USER=admin
POSTGRES_PASSWORD=admin123
POSTGRES_DB=cursos_db
POSTGRES_PORT=5432
TOKEN_SECRET=sua_chave_secreta_aquidocker-compose up -dmvn spring-boot:runA aplicação iniciará em: 👉 http://localhost:8080
👉 http://localhost:8080/swagger-ui.html
A autenticação é baseada em JWT Token.
Exemplo de fluxo:
- Faça login em
/auth/loginenviando email e senha. - O retorno será um token JWT.
- Envie esse token no header
Authorizationem todas as requisições:Authorization: Bearer seu_token_aqui
| Rota | Acesso | Descrição |
|---|---|---|
POST /auth/register |
Público | Cria um novo usuário |
POST /auth/login |
Público | Realiza login e retorna token |
POST /auth/alterRole |
ADMIN | Altera permissões de um usuário |
GET /courses/** |
USER / ADMIN | Consulta cursos |
POST /college/** |
ADMIN | Gerencia faculdades |
Todas as requisições são registradas automaticamente na tabela tb_access_logs com os seguintes dados:
- IP do cliente
- Endpoint acessado
- Método HTTP
- Código de status
- Timestamp da requisição
- Resultado (sucesso/falha)
Este projeto foi desenvolvido com foco em:
- Segurança e boas práticas REST
- Autenticação moderna com JWT
- Auditoria e rastreabilidade
- Escalabilidade e modularidade de código
- Ambiente padronizado com Docker
Pedro Peixoto
Desenvolvedor Backend Java ☕ | Spring Boot | APIs REST | Segurança | Docker
🔗 GitHub: github.com/Peixotim
💼 LinkedIn: linkedin.com/in/Peixotim
Este projeto está licenciado sob a licença MIT — sinta-se livre para utilizar, estudar e contribuir!
“Segurança não é uma feature, é um princípio.” 💻🔒
— Projeto desenvolvido com dedicação, aprendizado e boas práticas.