API REST para un sistema de foro, desarrollada como parte del Challenge de Alura Latam. Permite a los usuarios registrarse, crear tópicos de discusión, publicar respuestas y gestionar cursos. ForoHub es una plataforma backend desarrollada con Spring Boot 3, Spring Security, JWT, Java 21 y JPA/Hibernate. El proyecto sigue una arquitectura limpia y modular, asegurando mantenibilidad y escalabilidad.
- 🔒 Autenticación y Autorización mediante JWT (Bearer Token).
- 👥 Gestión de Usuarios y Perfiles con roles y permisos.
- 📝 Módulo de Tópicos y Respuestas estilo foro comunitario.
- 🎓 Administración de Cursos asociados a usuarios y temas.
- 📜 Swagger/OpenAPI para documentación interactiva de la API.
- 🗄️ Persistencia con JPA/Hibernate sobre MySQL (H2 para pruebas).
- 🚀 Arquitectura modular con separación clara en
controller,domaineinfra.
La arquitectura de ForoHub se organiza en tres capas principales:
- Controller → Expone endpoints REST.
- Domain → Contiene entidades, DTOs, servicios y repositorios.
- Infra → Configuración de seguridad, manejo de errores y utilidades.
el diagrama Entidad Relación de ForoHub se organiza en cinco tablas principales:
Descripción de las Relaciones
- 📜 Usuario y Perfil (Muchos a Muchos): Un usuario puede tener múltiples perfiles y un perfil puede ser asignado a múltiples usuarios. Esto se gestiona a través de la tabla usuarios_perfiles.
- 🔒 Usuario y Tópico (Uno a Muchos): Un usuario puede crear muchos tópicos.
- 👥 Usuario y Respuesta (Uno a Muchos): Un usuario puede escribir muchas respuestas.
- 🎓 Curso y Tópico (Uno a Muchos): Un curso puede tener muchos tópicos asociados.
- 🔑 Tópico y Respuesta (Uno a Muchos): Un tópico puede tener muchas respuestas.
- Java 17
- Spring Boot 3
- Spring Security 6 + JWT
- Spring Data JPA (Hibernate)
- MySQL / H2 (dependiendo del perfil)
- Swagger / OpenAPI 3
- Maven como gestor de dependencias
git clone https://github.com/24Kuant/forohub.git
cd forohubEditar application.properties o application.yml en src/main/resources/:
spring.datasource.url=jdbc:mysql://localhost:3306/forohub
spring.datasource.username=usuario
spring.datasource.password=contraseñamvn clean install
mvn spring-boot:run- Swagger UI: http://localhost:8080/swagger-ui.html
- API Base:
http://localhost:8080
POST /auth/login→ Genera un token JWT.
POST /usuarios→ Registrar usuario.GET /usuarios→ Listar usuarios.PUT /usuarios→ Actualizar usuario.DELETE /usuarios/{id}→ Eliminar (borrado lógico).
POST /cursos→ Registrar curso.GET /cursos→ Listar cursos.
POST /topicos→ Crear nuevo tópico.GET /topicos→ Listar tópicos.
POST /respuestas→ Agregar respuesta.GET /respuestas→ Listar respuestas.
- Autenticación vía
POST /auth/logincon credenciales. - Respuesta incluye un Bearer Token.
- Todas las demás peticiones requieren el header:
Authorization: Bearer <token>- Haz un fork del repositorio.
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad). - Realiza tus cambios y haz commit (
git commit -m 'Agregada nueva funcionalidad'). - Haz push a la rama (
git push origin feature/nueva-funcionalidad). - Abre un Pull Request 🚀.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más información.
Desarrollado con 💻 y ☕ por Kuant.

