
API REST de foro técnico con Spring Boot 3, Spring Security (JWT) y OpenAPI; robusta y documentada.
- ✅ Autenticación JWT con tokens de 2 horas
- ✅ CRUD completo de Tópicos
- ✅ Documentación OpenAPI / Swagger UI
- ✅ Validaciones con Bean Validation
- ✅ Migraciones de BD con Flyway
- ✅ Manejo global de errores
- ✅ Variables de entorno para configuración segura
| Tecnología |
Versión |
| Java |
17 |
| Spring Boot |
3.3 |
| Spring Security |
6 |
| MySQL |
8.0 |
| Flyway |
Migrations |
| JWT (Auth0) |
4.x |
| SpringDoc OpenAPI |
2.x |
| Método |
Ruta |
Descripción |
Acceso |
POST |
/login |
Obtener token JWT |
Público |
| Método |
Ruta |
Descripción |
Acceso |
GET |
/topicos |
Listar tópicos (paginado) |
🔒 Token |
GET |
/topicos/{id} |
Detalle de un tópico |
🔒 Token |
GET |
/topicos/filter |
Filtrar por curso y año |
🔒 Token |
POST |
/topicos |
Crear tópico |
🔒 Token |
PUT |
/topicos/{id} |
Actualizar tópico |
🔒 Token |
DELETE |
/topicos/{id} |
Eliminar tópico |
🔒 Token |
Crea un archivo .env o configura las variables de entorno:
DB_DATABASE_URL=jdbc:mysql://localhost:3306/forohub_db
TU_USUARIO=root
TU_PASSWORD=tu_password
JWT_SECRET=tu_secreto_jwt
🔐 JWT
json
POST /login
{
"login": "usuario@email.com",
"contrasena": "123456"
}
Token válido por 2 horas. Úsalo en el header:
text
Authorization: Bearer <token>
🚀 Cómo ejecutar
Clona el repositorio
Configura las variables de entorno
Crea la base de datos: CREATE DATABASE forohub_db;
Ejecuta el proyecto — Flyway crea las tablas automáticamente
Accede a Swagger UI: http://localhost:8080/swagger-ui/index.html
📐 Estructura del proyecto
text
src/
├── main/
│ ├── java/com/aluraCursos/ForoHub/
│ │ ├── controller/ # Autenticación, Tópicos, Respuestas
│ │ ├── domain/
│ │ │ ├── curso/ # Entidad Curso
│ │ │ ├── topico/ # Entidad Tópico
│ │ │ ├── usuario/ # Entidad Usuario
│ │ │ └── dto/ # Records DTO
│ │ ├── infra/
│ │ │ ├── errores/ # Manejo de errores
│ │ │ ├── security/ # JWT, Filtros, Config
│ │ │ └── springdoc/ # Configuración OpenAPI
│ │ └── repository/ # Repositorios JPA
│ └── resources/
│ ├── application.properties
│ └── db/migration/ # Scripts Flyway
└── test/
🗺️ Roadmap
Refresh tokens
Administración de usuarios/roles vía endpoints
Tests de integración (RestAssured / Testcontainers)
Perfil Docker (compose: app + MySQL)
🔥 Autoría
Desarrollado por BeeHighCode