Backend para la aplicación HarmonySocial desarrollado con Node.js, Express y TypeScript.
Backend de HarmonySocial, una plataforma para unir el aprendizaje musical con la interacción social. Este servidor proporciona los servicios necesarios para democratizar el acceso a la educación musical (alineado con el ODS 4) y crear un espacio donde los usuarios pueden desarrollar sus habilidades musicales, compartir sus creaciones y conectarse con otros músicos.
- Arquitectura hexagonal (puertos y adaptadores)
- Gestión de usuarios (registro, autenticación, actualización)
- Sistema de gestión de amistades (solicitudes, aceptación, rechazo)
- Validación de datos con express-validator
- Autenticación con JWT
La API está completamente documentada en los siguientes archivos:
POST /api/user- Registrar nuevo usuarioPOST /api/login- Iniciar sesiónGET /api/users- Obtener todos los usuariosGET /api/user/id/:id- Obtener usuario por ID
POST /api/friendship- Crear solicitud de amistadPUT /api/friendship/accept- Aceptar solicitud de amistadPUT /api/friendship/reject- Rechazar solicitud de amistadGET /api/friendship/user/:id- Obtener amistades de un usuario
- Instalar dependencias:
npm install- Ejecutar en modo desarrollo:
npm run dev- Compilar para producción:
npm run build- Ejecutar pruebas:
npm run testEl proyecto sigue una arquitectura hexagonal:
src/domain: Modelos y puertos (interfaces)src/application: Servicios y lógica de negociosrc/infrastructure: Adaptadores, controladores y configuración
- HarmonySocial Backend
HarmonySocial combina la pasión por la música con la potencia de la tecnología. La aplicación permite a los usuarios:
- Aprender teoría musical mediante herramientas interactivas, como el Círculo de Quintas.
- Subir y compartir canciones (originales o covers), generando posts con interacciones sociales.
- Conectarse y colaborar con otros músicos mediante likes, comentarios y compartidos.
- Interacción: Los usuarios pueden subir canciones, dar likes, comentar, compartir y seguir a otros músicos.
- Posts: Cada canción subida genera un post que incluye información del autor, fecha de publicación, descripción y métricas de interacción.
- Teoría Musical: Explicación detallada de canciones que incluye datos sobre tónica, progresión armónica, acordes, BPM, instrumentos y nivel de dificultad.
- Herramientas Didácticas: Uso del Círculo de Quintas para enseñar teoría musical de forma interactiva.
- Perfiles Personalizados: Cada usuario cuenta con un perfil donde se muestra avatar, canciones subidas, progreso en el aprendizaje y elementos de gamificación.
- Conexiones Sociales: Posibilidad de seguir a otros usuarios y formar parte de una comunidad activa.
- Verificación Colaborativa: Las canciones pueden ser validadas tanto por la comunidad como por artistas, aumentando la confiabilidad del contenido.
- Node.js con Express: Implementado en TypeScript, utilizando una arquitectura hexagonal (ports & adapters) que desacopla el núcleo de la aplicación de los detalles de infraestructura.
- Gestión de Errores y Validaciones: Uso de DTOs para requests/responses y manejo centralizado de errores.
- PostgreSQL: Diseño de un modelo relacional normalizado con tablas dedicadas a usuarios, artistas, canciones, posts, comentarios, likes, instrumentos y géneros.
- Integridad y Relaciones: Implementación de relaciones 1:1 entre canciones y teoría musical, y relaciones 1:N para posts y demás interacciones.
El esquema de la base de datos incluye:
- Usuarios: Datos de autenticación, perfil y métricas de aprendizaje.
- Artistas: Información y verificación de artistas.
- Canciones y Teoría Musical: Cada canción cuenta además con un análisis teórico asociado.
- Posts, Comentarios y Likes: Registro de la actividad social y de interacción de la comunidad.
Se han implementado además triggers para mantener la integridad de los campos de fecha de actualización en cada tabla.
HarmonySocial se inspira en la idea de que la música es un lenguaje universal. Así como en una banda cada instrumento aporta su sonido para crear armonía, en esta aplicación cada usuario aporta su talento para construir una comunidad musical diversa e inclusiva.
Disfruta explorando, aprendiendo y compartiendo en HarmonySocial.
Link de codi.link de la prueba de concepto web Prueba de concepto