challengeoneforoalura5
La API del Foro Alura es una aplicación RESTful desarrollada en Java utilizando el framework Spring. Su propósito es crear y gestionar un foro similar al de Alura, permitiendo a los usuarios realizar una variedad de operaciones relacionadas con tópicos, usuarios y respuestas. A continuación, se describen las principales funcionalidades:
- Los usuarios pueden crear cursos especificando su nombre y categoría.
- Se pueden buscar cursos por nombre y categoría.
- Los cursos se pueden actualizar y eliminar.
- Los usuarios pueden crear tópicos de discusión con un título, mensaje y curso relacionado.
- Los tópicos pueden estar en diferentes estados, como "No Respondido" o "Respondido".
- Los usuarios pueden buscar tópicos por título, estado y autor.
- Se permite la actualización y eliminación de tópicos.
- Se realiza un seguimiento del número de respuestas en cada tópico.
- Los usuarios pueden responder a tópicos existentes proporcionando un mensaje.
- Se pueden buscar respuestas por tópico.
- Las respuestas se pueden actualizar y eliminar.
- Los usuarios pueden registrarse proporcionando su nombre, apellido, dirección de correo electrónico y contraseña.
- Se manejan roles de usuario, como "USER" y "ADMIN".
- Los usuarios pueden actualizar su información de perfil, incluida la contraseña.
- Los administradores pueden desactivar y activar cuentas de usuario.
- Se realiza una gestión segura de contraseñas con encriptación.
- Utiliza Spring Security para proteger las rutas y autenticar a los usuarios.
- Se emplea JWT (JSON Web Tokens) para la autenticación basada en token.
- Las excepciones personalizadas manejan errores de seguridad.
- La API está documentada utilizando Springdoc OpenAPI.
- Los endpoints y sus descripciones están disponibles para los desarrolladores.
- Los desarrolladores pueden contribuir al proyecto siguiendo un proceso de bifurcación y solicitud de extracción.
- Se fomenta la contribución al proyecto para mejorarlo continuamente.
- Java
- Spring Boot
- Spring Security
- Spring Data JPA
- JWT (JSON Web Tokens)
- Base de datos relacional (ejemplo: MySQL)
- Documentación de API con Springdoc OpenAPI
- Control de versiones con Git y GitHub
Estas características hacen que el Foro Alura sea una plataforma completa y segura para la colaboración y discusión en la comunidad de estudiantes de Alura.
Curso
: Representa un curso con su nombre y categoría.Categoria
: Representa una categoría para clasificar los cursos.
Respuesta
: Representa una respuesta a un tópico en el foro.DatosActualizacionRespuesta
: Contiene datos para actualizar una respuesta.DatosConsultaRespuesta
: Contiene datos para consultar una respuesta.DatosRegistroRespuesta
: Contiene datos para registrar una nueva respuesta.
Topico
: Representa un tópico o pregunta en el foro.DatosActualizacionTopico
: Contiene datos para actualizar un tópico.DatosRegistroTopico
: Contiene datos para registrar un nuevo tópico.StatusTopico
: Enumeración que define el estado de un tópico.
Usuario
: Representa un usuario del sistema.Role
: Representa un rol de usuario.
- Excepciones personalizadas utilizadas en la aplicación.
- Configuraciones de seguridad utilizando Spring Security.
- Filtros de seguridad para autenticación basada en token JWT.
- Configuraciones de Springdoc OpenAPI para documentación.
- Repositorios JPA para interactuar con la base de datos.
- Servicios que gestionan la lógica de negocio de la aplicación.
- Creación, actualización, eliminación y consulta de cursos, respuestas, tópicos y usuarios.
- Gestión de roles, encriptación de contraseñas y validaciones.
- Java
- Spring Boot
- Spring Security
- Spring Data JPA
- JWT (JSON Web Tokens)
- Base de datos relacional (ejemplo: MySQL)
- Documentación de API con Springdoc OpenAPI
- Control de versiones con Git y GitHub
- Clona el repositorio desde GitHub.
- Configura la base de datos en el archivo
application.properties
o desde consola con el archivo JAR yapplication-prod.properties
. - Ejecuta la aplicación Spring Boot.
- Accede a la API a través de las rutas especificadas en el controlador.
Si deseas contribuir a este proyecto, por favor sigue los pasos:
- Realiza un fork del repositorio.
- Crea una rama con una descripción clara de la función o corrección que deseas implementar.
- Realiza tus cambios y asegúrate de mantener la calidad del código.
- Crea un pull request a la rama principal del proyecto.
Esta aplicación fue desarrollada por Saúl Wade León como parte de Challenges BackEnd ONE - G5.
Este proyecto está bajo la Licencia SWL.