# soulSong - The no gender dating app
App de citas que relaciona a sus usuarios según sus gustos musicales y el uso de otras herramientas como la ia
SoulSong es una API desarrollada con Spring Boot que permite gestionar usuarios, perfiles y canciones en una plataforma inspirada en el poder de la música. El proyecto está diseñado para cumplir con los requisitos técnicos de una prueba, priorizando la funcionalidad, la organización, y la claridad.
- Implementado para las entidades User, Profile y Song.
- Endpoints:
- POST /users, GET /users, PUT /users/{id}, DELETE /users/{id}.
- Similar para profiles y songs.
- DTOs para entrada/salida de datos.
- Relación 1:N entre User y Profile.
- Relación N:M entre User y Song (usuarios con canciones favoritas).
- React para interfaz de usuario.
- CRUD integrado con las APIs para usuarios, perfiles y canciones.
- Diseño UI/UX básico, con navegación y responsividad parcial (pendiente de optimización).
- Separación clara entre entidades y datos expuestos a la API.
- Uso de DTOs para transferencia de datos.
- Conversión manual entre DTOs y entidades.
- Controlador global con @RestControllerAdvice.
- Respuestas personalizadas para errores comunes (400, 404, 500).
- Enumerado para el estado de usuarios (ACTIVE, INACTIVE).
- Uso de LocalDateTime para fechas de creación y actualización.
- Endpoints parcialmente documentados con Swagger (pendiente de completar).
- Mejorar el diseño del menú responsive (hamburguesa) en el frontend.
- Armonizar estilos globales para una experiencia UI/UX impactante.
- Finalizar interacción con el backend para perfiles y canciones.
- Unitarias: Implementar con JUnit y Mockito para probar la lógica de negocio.
- Integración: Usar RestAssured para probar endpoints.
- Finalizar documentación de Swagger/OpenAPI.
- Agregar ejemplos de entrada y salida en todos los endpoints.
- Implementar paginación en los endpoints GET para users, profiles, y songs.
- Añadir filtros (por ejemplo, buscar perfiles por bio).
- Implementar Spring Security con autenticación básica o JWT.
- Roles USER y ADMIN para proteger endpoints sensibles.
- Crear un archivo Dockerfile para producción.
- Configurar Docker Compose para desarrollo y pruebas.
- Permitir subida de imágenes (avatares para perfiles o portadas de canciones).
- Almacenamiento en local o en un servicio externo como S3.
- Configurar un pipeline para integración y despliegue continuo.
- Las pruebas (unitarias e integración) y la autenticación son esenciales para asegurar la calidad y la protección de la API.
- Completar y optimizar el diseño del frontend para ofrecer una experiencia de usuario impecable.
- Completar Swagger y README antes de la presentación final.
- Aunque no es crítico, agrega puntos extra y demuestra dominio técnico.
- User: Representa a los usuarios con sus datos básicos.
- Profile: Información detallada asociada a un usuario.
- Song: Canciones favoritas que los usuarios pueden gestionar.
- Un User puede tener un Profile (1:1).
- Un User puede tener muchas Songs (N:M).
- Estilos Responsive: Mejorar el diseño del menú y las tarjetas en pantallas pequeñas.
- Swagger Completo: Detallar cada endpoint.
- Mejoras de CI/CD: Configurar pipeline de GitHub Actions para automatizar pruebas y despliegues.
mvn spring-boot:run