ForoHub es una API REST desarrollada con Spring Boot que simula el funcionamiento de un foro de discusión técnico. El proyecto implementa la persistencia de datos en una base de datos relacional y utiliza JWT (JSON Web Tokens) para asegurar que solo usuarios autenticados puedan interactuar con la plataforma.
Este proyecto forma parte del programa Oracle Next Education (ONE).
- Java 21
- Spring Boot 3
- Spring Security
- Spring Data JPA
- Auth0 JWT
- MySQL
- Flyway
- Lombok
- Maven
- Autenticación Stateless: Seguridad con JWT para manejo de sesiones sin estado.
- Persistencia: Gestión de datos con MySQL y Spring Data JPA.
- Migraciones: Control de versiones de base de datos con Flyway.
- Seguridad: Protección de rutas con Spring Security y encriptación BCrypt.
- Arquitectura: Organización clara mediante Controladores, Servicios, DTOs y Repositorios.
- Manejo de Errores: Tratamiento centralizado de excepciones.
El sistema utiliza un esquema de seguridad Stateless (sin estado).
- Registro: Los usuarios se registran y su contraseña se almacena de forma segura mediante BCrypt hashing.
- Login: El usuario envía sus credenciales y, si son válidas, la API devuelve un Token JWT.
- Autorización: Para acceder a rutas protegidas, el usuario debe enviar el token en el encabezado Authorization.
POST /login:Recibe email/password y devuelve el JWT.POST /users:Registro de nuevos usuarios.
GET /topics:Lista todos los tópicos del foro(soporta paginación y ordenamiento).GET /topics/{id}:Detalle de un tópico específico y sus respuestas.POST /topics:Creación de un nuevo hilo de discusión.PUT /topics/{id}:Actualización de título o mensaje de un tópico propio.DELETE /topics/{id}:Eliminación de un tópico.
GET /courses:Lista de cursos disponibles.POST /courses:Registro de nuevos cursos.POST /responses:Envía una solución o comentario a un tópico específico:
-
Clonar el repositorio:
git clone https://github.com/tu-usuario/forohub.git
-
Configurar la Base de Datos:
-
Crea una base de datos en MySQL llamada
forohub. -
Configura tus credenciales en el archivo
src/main/resources/application.properties:spring.datasource.url=tu_url spring.datasource.username=tu_usuario spring.datasource.password=tu_contraseña api.security.secret=${JWT_SECRET:tu_codigo}
-
-
Ejecutar las Migraciones:
- Al iniciar la aplicación, Flyway creará automáticamente las tablas necesarias.
-
Correr la aplicación:
-
Usa tu IDE (IntelliJ/Eclipse) o ejecuta:
mvn spring-boot:run
-
controller: Puntos de entrada para Cursos, Respuestas, Tópicos y Usuarios.dto:Clases Record para la transferencia de datos segura y validada.exceptions:Manejo global de errores y excepciones personalizadas.infra.security:El núcleo de seguridad (JWT Service, Filtros y Configuraciones).model: Entidades JPA.repository:Interfaces para la comunicación con la base de datos.service:Lógica de negocio.
![]() Andrio Contreras |
|---|
✅ Finalizado — abierto a mejoras o nuevas versiones.

