Skip to content

MahsaSimaei/Museic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Museic

Plataforma musical full-stack con catálogo, playlists y panel de administración

Node.js Express MySQL JavaScript JWT


¿Qué es Museic?

Museic es una aplicación web full-stack que simula una plataforma de streaming musical. Los usuarios pueden explorar un catálogo de canciones (integrado con la API de Jamendo), crear y gestionar sus propias playlists, guardar favoritos y consultar su historial de reproducción. Los administradores disponen de un panel de gestión independiente.

El proyecto cubre todo el ciclo de desarrollo: diseño de base de datos relacional, API REST con autenticación segura y frontend desacoplado en JavaScript puro — sin frameworks.


Funcionalidades principales

Área Características
Catálogo Exploración y búsqueda de canciones vía Jamendo API · Filtros por género, estado de ánimo y propósito
Playlists Crear, editar y eliminar playlists · Visibilidad pública/privada · Añadir y reordenar canciones
Favoritos Marca y gestiona tus canciones favoritas
Historial Registro automático de reproducciones por usuario
Autenticación Registro e inicio de sesión con JWT · Contraseñas hasheadas con bcrypt
Roles Sistema de roles USER / ADMIN · Rutas protegidas por middleware
Panel Admin Gestión de usuarios, canciones y playlists desde una interfaz dedicada

Arquitectura

Museic/
├── frontend/          # SPA — HTML5 · CSS3 · JavaScript (ES Modules, vanilla)
│   ├── index.html
│   ├── css/styles.css
│   └── js/
│       ├── api.js     # Capa de comunicación con la API REST
│       └── main.js    # Lógica de vistas y routing en cliente
│
├── backend/           # API REST — Node.js + Express (patrón MVC)
│   ├── server.js
│   ├── config/db.js
│   ├── routes/        # Definición de endpoints
│   ├── controllers/   # Lógica de negocio
│   └── middleware/    # Auth JWT · Guard de admin
│
└── database/
    └── museic_db.sql  # Esquema MySQL completo con datos de prueba

Endpoints REST principales

Método Ruta Descripción
POST /api/v1/auth/register Registro de usuario
POST /api/v1/auth/login Login → devuelve JWT
GET /api/v1/songs Catálogo de canciones (con filtros)
GET/POST/DELETE /api/v1/playlists CRUD de playlists
GET/POST/DELETE /api/v1/favorites Gestión de favoritos
GET/PUT/DELETE /api/v1/admin/... Rutas de administración (rol ADMIN)

Stack tecnológico

Backend

  • Node.js + Express — servidor HTTP y enrutamiento
  • mysql2 — driver MySQL con soporte de promesas
  • jsonwebtoken — generación y verificación de tokens JWT
  • bcrypt — hash seguro de contraseñas
  • axios — consumo de la API externa de Jamendo
  • dotenv — gestión de variables de entorno

Frontend

  • HTML5 + CSS3 + JavaScript ES Modules (sin frameworks)
  • Comunicación con la API mediante fetch

Base de datos

  • MySQL (XAMPP) con esquema relacional: Usuarios, Canciones, Playlists, Favoritos, Historial

Instalación y puesta en marcha

Requisitos previos

1. Base de datos

  1. Inicia MySQL desde el panel de XAMPP.
  2. Importa el esquema desde phpMyAdmin o por consola:
    mysql -u root -p < database/museic_db.sql

    El script crea la base de datos museic_db si no existe e incluye datos de prueba.

2. Backend

cd backend
npm install

Crea el archivo backend/.env:

PORT=3002

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=museic_db

JWT_SECRET="ClaveSecretaDeMuseic"

JAMENDO_CLIENT_ID=1ebf1a56

# Código requerido para registrar cuentas ADMIN
ADMIN_REGISTRATION_CODE=webs

Inicia el servidor:

npm run dev        # Desarrollo (nodemon)
npm start          # Producción

Servidor disponible en: http://localhost:3002

3. Frontend

Sirve el frontend desde Apache (XAMPP con el proyecto en htdocs/Museic) y abre:

http://localhost/Museic/frontend/

Autenticación y roles

  • El sistema usa JWT (Authorization: Bearer <token>) para proteger todas las rutas privadas.
  • Las contraseñas se almacenan como hash con bcrypt — nunca en texto plano.
  • Roles disponibles: USER (acceso estándar) y ADMIN (acceso total al panel de gestión).
  • El registro como ADMIN requiere el código definido en ADMIN_REGISTRATION_CODE.

Credenciales de prueba

Rol Email Contraseña
ADMIN admin@museic.com admin123
USER user@museic.com user1234

Licencias de música

Las canciones del catálogo provienen de Jamendo bajo licencias Creative Commons. Consulta MUSIC_LICENSES.md para los detalles completos.

About

Museic — A creative blend of muse (inspiration) and music. This project is a full-stack web application developed by students of Universidad Europea to manage playlists using open-source music.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors