blog-manager cover

blog-manager

Repo Repository

blog-manager es una API REST para una plataforma de blogs, encargada de la autenticación, la autorización y la gestión de contenido de posts y comentarios. Cualquier frontend es un cliente delgado que simplemente consume la API — toda la lógica de negocio, la validación y la seguridad residen en el backend.

Autenticación y seguridad

Los usuarios se autentican mediante un flujo de usuario/contraseña a través de Spring Security, respaldado por access tokens emitidos con JJWT y refresh tokens de un solo uso persistidos por usuario. Un JwtAuthFilter personalizado valida los tokens en cada solicitud, mientras que un RestAuthEntryPoint devuelve respuestas de error JSON estructuradas en lugar de redirecciones por defecto cuando la autenticación falta o es inválida. Un componente CurrentUserProvider resuelve el usuario autenticado a partir del contexto de seguridad para su uso en los distintos servicios.

Posts y comentarios

Los posts pertenecen a autores mediante una relación PostUser, y los comentarios extienden esto a una estructura PostCommentUser, permitiendo que los usuarios comenten en cualquier post pero solo modifiquen sus propias contribuciones. La propiedad se valida en la capa de servicio para cada operación de modificación — actualizar o eliminar un post o comentario verifica el ID del usuario solicitante contra el autor del recurso antes de proceder. Todos los IDs de las entidades son UUIDs de tipo String generados al persistir.

Manejo de errores y diseño de la API

Un GlobalExceptionHandler centralizado mapea las excepciones de dominio — no encontrado, prohibido, usuario duplicado, tokens inválidos/expirados, JSON malformado y fallos de validación — a una forma consistente de ApiResponse con los códigos de estado HTTP correspondientes. La API está completamente documentada con OpenAPI/Swagger UI, incluyendo soporte integrado para autorización con Bearer JWT directamente desde la interfaz de la documentación.

Pruebas

Las capas de servicio y repositorio están cubiertas por pruebas unitarias e de integración, usando Testcontainers para levantar una instancia real de PostgreSQL en las pruebas de integración de repositorios y servicios, en lugar de depender de mocks o una base de datos en memoria.

Stack tecnológico

Construido con Spring Boot 4 y Java 25, usando Spring Security para la autenticación, JJWT para la generación y validación de tokens, y JPA/Hibernate sobre PostgreSQL para la persistencia. La validación se maneja con Spring Validation, y la API se documenta mediante springdoc-openapi.