Foro Hub es una API REST que permite la gestión de un foro de discusión especializado. La aplicación permite a los usuarios crear, leer, actualizar y eliminar tópicos de discusión.
Cada tópico está asociado a un curso específico y mantiene un registro del autor y el estado de la discusión.
- Gestión completa de tópicos (CRUD)
- Autenticación mediante JWT (JSON Web Tokens)
- Estados de tópicos (NO_RESPONDIDO, RESUELTO, CERRADO)
- Documentación con Swagger/OpenAPI
- Paginación y ordenamiento de resultados
- Java 21
- Spring Boot 3.2.1
- Spring Security + JWT
- MySQL
- Flyway para migraciones
- Swagger/OpenAPI para documentación
- JDK 21
- Maven 3.x
- MySQL
''' bash
- git clone http://github.com/UNIJUAN/forum-hub.git
- cd forum-hub
Copiar application.properties.example A application.properties
- Actualizar credenciales en application.properties: spring.datasource.url=jdbc:mysql://localhost:3305/forum_hub?createDatabaseIfNotExist=true spring.datasource.username=tu_usuario spring.datasource.password=tu_password
mvn clean install mvn spring-boot:run
POST /auth/login Content-Type: application/json { "login": "admin@forum.com", "password": "admin123" }
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
POST /topics Authorization: Bearer {token} Content-Type: application/json
{
"title": "Ejemplo de tópico",
"message": "Contenido del tópico",
"author": "usuario@ejemplo.com",
"course": "Spring Boot"
}
GET /topics?page=0&size=10 Authorization: Bearer {token}
GET /topics/{id} Authorization: Bearer {token}
PUT /topics Authorization: Bearer {token} Content-Type: application/json { "id": 1, "title": "Título actualizado", "message": "Mensaje actualizado" }
DELETE /topics/{id} Authorization: Bearer {token}
La documentación completa de la API está disponible en Swagger:
- forum-hub/
- ├── src/
- │ ├── main/
- │ │ ├── java/
- │ │ │ └── com/example/forum_hub/
- │ │ │ ├── controller/
- │ │ │ ├── domain/
- │ │ │ ├── dto/
- │ │ │ ├── infra/
- │ │ │ ├── repository/
- │ │ │ └── service/
- │ │ └── resources/
- │ │ └── db/migration/
- │ └── test/
- ├── pom.xml
- └── README.md
La estructura de la base de datos se gestiona con Flyway migrations ubicadas en:
- src/main/resources/db/migration/
- V1__create-table-topics.sql: Estructura de tópicos
- V2__create-table-users.sql: Estructura de usuarios
- V3__insert-admin-user.sql: Usuario administrador inicial
- Autenticación basada en JWT
- Tokens con expiración configurable (24 horas por defecto)
- Endpoints protegidos requieren token válido en header: Authorization: Bearer {token}
- ✅ Estructura base implementada
- ✅ Configuración de seguridad JWT
- ✅ CRUD de tópicos
- ✅ Documentación Swagger
- ✅ Migraciones Flyway