Foro Hub es una aplicación API de back-end diseñada para gestionar un foro de discusión. Permite a los usuarios registrarse, autenticarse y realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sobre los tópicos del foro, utilizando JWT para la seguridad.. Esta aplicación se desarrolló como parte de la formación en Oracle Next Education (ONE) y Alura Latam, utilizando Java, framework Spring Boot, MySQL.
Ofrece las opciones de realizar EndPoints para los tópicos del Foro Hub:
- Registro de tópicos: Permite registrar nuevos tópicos en la base de datos.
- Listar tópicos: Muestra todos los tópicos registrados la base de datos.
- Mostrar datos de un tópico: Permite ver los detalles de un tópico seleccionado.
- Modificar un tópico: Permite actualizar la información de un tópico seleccionado.
- Eliminar un tópico: Permite eliminar un tópico de la base de datos.
Además, todo esto está protegido por autenticación utilizando JWT (JSON Web Token) en modo STATELESS.
La aplicacion funciona utilizando una API creada desde cero, donde obtenemos informacion de todos los topicos registrados de forma exitosa en la base de datos y usuarios que sean autenticados, generando un Token que expira por normas de seguridad hacia la aplicacion. Realiza las siguientes tareas:
- Registro de usuarios: Permite a los usuarios registrarse con su nombre, email y contraseña.
- Autenticación y autorización: Protege las rutas mediante JWT, asegurando que solo los usuarios autenticados puedan acceder a ciertas funcionalidades.
- Gestión de tópicos: Los usuarios pueden crear, ver, actualizar y eliminar tópicos en el foro.
- Validación y manejo de errores: Implementa validaciones en las entradas de datos y maneja errores de forma adecuada.
En nuestra aplicacion utilizamos las siguientes dependencias en el archivo pom.xml
- spring-boot-starter-data-jpa:3.3.1
- spring-boot-starter-security:3.3.1
- spring-boot-starter-validation:3.3.1
- spring-boot-starter-web:3.0.2
- flyway-core:10.10
- flyway-mysql:10.10.0
- spring-boot-devtools:3.3.1
- spring-boot-starter-test:3.3.1
- spring-boot-security-test:3.3.1
- java-jwt:4.2.0
- lombok:1.18.32
- Intellij IDEA Community Edition
- JDK 21
- Java 21
- MySQL 8.0
- Maven
- Spring Boot 3.3.1
- Spring Security
- JWT (JSON Web Token)
- Flyway que nos facilita para migraciones de base de datos
Para poder instalar la aplicacion, necesitamos los siguientes requisitos:
- Java 21 instalado y su JDK
- MySQL configurado e instalado
- Intellij IDEA o su IDE de preferencia como Eclipse o NetBeans.
-
Clona el repositorio de GitHub
git clone https://github.com/marco-sis/Challenge-ForoHub.git
-
Configuracion la base de datos MySQL: Crea una base de datos llamado "db_forohub"
-
Configuracion de las variables de entorno: Define las siguientes variables de entorno en tu sistema: SQL_USERNAME -> tu usuario de MySQL SQL_PASSWORD -> tu contraseña de MySQL JWT_SECRET -> una clave secreta para JWT
-
Abre el proyecto en IntelliJ IDEA.
-
Ejecuta las migraciones utilizando Flyway: Las migraciones se ejecutarán automáticamente al iniciar la aplicación.
-
Ejecuta la aplicación:
Atension: Ejecutar la clase ForohubApplication.
- Registro y Autenticación:
Usa un cliente de API como Insomnia o Postman.
POST http://localhost:8080/login: Autentícate y obtén el token JWT.
Header: Authorization: Bearer <ingresa tu token jwt>.
- Operaciones CRUD de Tópicos:
POST http://localhost:8080/topicos: Crear o registrar un nuevo tópico.
GET http://localhost:8080/topicos: Listar todos los tópicos.
GET http://localhost:8080/topicos/{id}: Obtener detalles de un tópico específico.
PUT http://localhost:8080/topicos/{id}: Actualizar un tópico.
DELETE http://localhost:8080/topicos/{id}: Eliminar un tópico.
El proyecto está completo en su versión básica, cuenta con las posibilidades de ampliación para agregar más funcionalidades como otras tablas por ejemplo.
Las contribuciones son bienvenidas. Para contribuir, por favor sigue los siguientes pasos:
- Abre un issue para discutir el cambio que deseas realizar.
- Haz un fork del repositorio.
- Abre un Pull Request.
Este proyecto está licenciado bajo la Licencia GNU General Public License