Skip to content

Proyecto de una aplicacion estilo red social pero incluyendo el manejo de la teoria musical

License

Notifications You must be signed in to change notification settings

DilanBernal/HarmonySocialBackend

Repository files navigation

HarmonySocial Backend

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.

Características del Backend

  • 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

Documentación

La API está completamente documentada en los siguientes archivos:

Principales Endpoints

Usuarios

  • POST /api/user - Registrar nuevo usuario
  • POST /api/login - Iniciar sesión
  • GET /api/users - Obtener todos los usuarios
  • GET /api/user/id/:id - Obtener usuario por ID

Amistades

  • POST /api/friendship - Crear solicitud de amistad
  • PUT /api/friendship/accept - Aceptar solicitud de amistad
  • PUT /api/friendship/reject - Rechazar solicitud de amistad
  • GET /api/friendship/user/:id - Obtener amistades de un usuario

Configuración y Ejecución

  1. Instalar dependencias:
npm install
  1. Ejecutar en modo desarrollo:
npm run dev
  1. Compilar para producción:
npm run build
  1. Ejecutar pruebas:
npm run test

Estructura de Carpetas

El proyecto sigue una arquitectura hexagonal:

  • src/domain: Modelos y puertos (interfaces)
  • src/application: Servicios y lógica de negocio
  • src/infrastructure: Adaptadores, controladores y configuración

Tabla de Contenidos

Introducción

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.

Características Principales

Módulo Social

  • 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.

Módulo Educativo

  • 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.

Gestión de Usuarios

  • 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.

Validación de Canciones

  • Verificación Colaborativa: Las canciones pueden ser validadas tanto por la comunidad como por artistas, aumentando la confiabilidad del contenido.

Arquitectura y Tecnologías

Backend

  • 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.

Base de Datos

  • 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.

Estructura de la Base de Datos

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.

Inspiración

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

About

Proyecto de una aplicacion estilo red social pero incluyendo el manejo de la teoria musical

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors