Skip to content

ForoHub es una API REST diseñada para la gestión de un foro en el que los participantes pueden crear y gestionar tópicos de discusión

Notifications You must be signed in to change notification settings

Seb-RM/ForoHub-desafio-JavaSpring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ForoHub

ForoHub es una API REST diseñada para la gestión de un foro en el que los participantes pueden crear y gestionar tópicos de discusión. Inspirado en el sistema de foros de Alura, este proyecto replica las funcionalidades clave de un backend de foro, permitiendo a los usuarios realizar operaciones de CRUD sobre los tópicos y gestionando usuarios y autenticación.

Índice

Funcionalidades principales

  • Crear un nuevo tópico
  • Listar todos los tópicos
  • Ver los detalles de un tópico específico
  • Actualizar un tópico existente
  • Eliminar un tópico
  • Implementación de autenticación y autorización mediante Spring Security
  • Validaciones según reglas de negocio
  • Persistencia de datos mediante MySQL

Requisitos del sistema

Configuración inicial

Creación del proyecto con Spring Initializr

  • Lenguaje: Java
  • Build Tool: Maven
  • Packaging: JAR
  • Dependencias incluidas:
    • Lombok.
    • Spring Web.
    • Spring Boot DevTools.
    • Spring Data JPA.
    • Flyway Migration.
    • MySQL Driver.
    • Validation.
    • Spring Security.
    • Java JWT.

Base de datos

La aplicación utiliza MySQL como base de datos para la persistencia de la información. Es necesario contar con una instancia de MySQL configurada y actualiza las credenciales en el archivo application.properties o application.yml.

Configuración del entorno

  1. Clona este repositorio:

    git clone <URL-del-repositorio>
  2. Configura las credenciales de conexión a la base de datos en el archivo src/main/resources/application.properties:

    spring.datasource.url=jdbc:mysql://localhost:3306/foro_hub
    spring.datasource.username=tu_usuario
    spring.datasource.password=tu_contraseña
    spring.jpa.hibernate.ddl-auto=update
    spring.flyway.enabled=true
  3. Construye el proyecto con Maven:

    mvn clean install
  4. Ejecuta las migraciones de Flyway:

    mvn flyway:migrate
  5. Inicia la aplicación:

    mvn spring-boot:run

Endpoints principales

Usuarios

  • POST /usuarios: Registrar un nuevo usuario.

Tópicos

  • POST /topicos: Crear un nuevo tópico.
  • GET /topicos: Listar todos los tópicos (con soporte para filtros).
  • GET /topicos/{id}: Ver los detalles de un tópico por su ID.
  • PUT /topicos/{id}: Actualizar un tópico existente.
  • DELETE /topicos/{id}: Eliminar un tópico.

Autenticación

  • POST /login: Autenticar un usuario y obtener un token JWT.

Ejemplo de request/response:

  • POST /topicos
    {
      "titulo": "Aprender Java Spring",
      "mensaje": "Este es un mensaje sobre aprender Spring Boot.",
      "autorId": 1,
      "cursoId": 1
    }
    Response:
    {
      "id": 33,
      "titulo": "Aprender Java Spring final",
      "mensaje": "Este es un mensaje sobre aprender Spring Boot.",
      "autor": {
          "id": 1,
          "nombre": "Juan Pérez"
      },
      "curso": {
          "id": 1,
          "nombre": "Java Básico"
      },
      "status": "ACTIVO",
      "fechaCreacion": "2025-01-18T18:48:29.400703"
      }

Arquitectura

El proyecto sigue una arquitectura en capas que incluye:

  1. Controladores: Gestionan las solicitudes HTTP y devuelven las respuestas correspondientes.
  2. Servicios: Contienen la lógica de negocio.
  3. Repositorios: Interactúan con la base de datos mediante Spring Data JPA.
  4. DTOs: Facilitan la transferencia de datos entre las capas.

Herramientas utilizadas

  • Spring Boot: Framework principal para el desarrollo de la API.
  • Spring Security: Gestión de autenticación y autorización.
  • MySQL: Base de datos para la persistencia de datos.
  • Flyway: Herramienta para la gestión de migraciones de la base de datos.
  • Lombok: Simplificación del código eliminando boilerplate.
  • Maven: Gestión de dependencias y construcción del proyecto.
  • Java JWT: Gestión de generación, firma y validación de tokens de acceso.

About

ForoHub es una API REST diseñada para la gestión de un foro en el que los participantes pueden crear y gestionar tópicos de discusión

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages