ForoHub es una réplica de un foro a nivel de back end y para eso crearemos una API REST usando Spring. Este proyecto está construido con Spring Boot y utiliza JWT para la autenticación.
- Registro y autenticación de usuarios
- Creación, lectura, actualización y eliminación (CRUD) de tópicos
- Seguridad basada en JWT
- Gestión de roles y permisos
- Java 17
- Spring Boot 2.7.x
- Spring Security
- JWT (JSON Web Tokens)
- JPA/Hibernate
- MySQL (como gestor de base de datos)
- H2 Database (para desarrollo y pruebas)
- Lombok
- Maven
- JDK 17 o superior
- Maven 3.6 o superior
- MySQL
bash
- git clone https://github.com/rhizor/Forohub.git
- cd Forohub
Asegúrate de tener una instancia de MySQL en ejecución y crea una base de datos para el proyecto. Luego, configura las credenciales de la base de datos en el archivo application.properties:
- spring.datasource.url=jdbc:mysql://localhost:3306/forohub
- spring.datasource.username=tu_usuario
- spring.datasource.password=tu_contrasena
- spring.jpa.hibernate.ddl-auto=update
- spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
-mvn clean install
- abre la terminal de tu IDE
- mvn spring-boot:run La aplicación estará disponible en http://localhost:8080
- Actualmente están implementadas todas las funcionalidades, sin embargo, hasta el momento solo se ha podido verificar la funcionalidad registrar y loguear con el usuario haciendo uso del token, crear, buscar, actualizar y borrar un topico. queda pendiente busqueda del usuario por id. Este problema se estará corrigiendo en el transcurso de los días.
- POST /api/auth/register: Registro de nuevos usuarios
- POST /api/auth/login: Autenticación de usuarios
- GET /api/topics: Obtener todos los tópicos
- POST /api/topics: Crear un nuevo tópico
- GET /api/topics/{id}: Obtener un tópico por ID
- PUT /api/topics/{id}: Actualizar un tópico por ID
- DELETE /api/topics/{id}: Eliminar un tópico por ID
curl -X POST http://localhost:8080/api/auth/register -H "Content-Type: application/json" -d '{ "nombre": "Juan Perez", "correoElectronico": "juan.perez@example.com", "contrasena": "password123" }'
curl -X POST http://localhost:8080/api/auth/login -H "Content-Type: application/json" -d '{ "username": "juan.perez@example.com", "password": "password123" }'
curl -X POST http://localhost:8080/api/topics -H "Content-Type: application/json" -H "Authorization: Bearer " -d '{ "titulo": "Nuevo Tópico", "contenido": "Contenido del tópico" }'
¡Las contribuciones son bienvenidas! Para contribuir, por favor sigue estos pasos:
- Haz un fork del proyecto
- Crea una nueva rama (git checkout -b feature/nueva-caracteristica)
- Realiza tus cambios y haz commit (git commit -am 'Añadir nueva característica')
- Haz push a la rama (git push origin feature/nueva-caracteristica)
- Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Para cualquier pregunta o sugerencia, por favor abre un issue en GitHub o contacta con el mantenedor del proyecto.