3.8 KiB
Audio Control - Backend
Este es el proyecto de backend para la aplicación SoundWave. Es una API RESTful construida con Node.js y Express, diseñada para gestionar la autenticación de usuarios, controlar un reproductor de audio y administrar una lista de reproducción de videos de YouTube.
Tabla de Contenidos
- Acerca del Proyecto
- Estructura de la API
- Tecnologías
- Instalación y Uso
- Variables de Entorno
- Estructura de la Base de Datos
Acerca del Proyecto
Este backend proporciona los servicios necesarios para que el frontend audio-player funcione correctamente.
- API RESTful: Endpoints claros y definidos para la gestión de recursos.
- Autenticación Segura: Maneja la autenticación de usuarios a través de Google OAuth 2.0 y genera tokens JWT para sesiones seguras.
- Gestión de Base de Datos: Se conecta a una base de datos MySQL para persistir datos de usuarios y listas de reproducción.
- Panel de Control Integrado: Sirve una interfaz web simple con EJS y Materialize CSS para el control directo del reproductor.
- Manejo de Errores Centralizado: Utiliza un middleware de Express para gestionar todos los errores de forma consistente.
Estructura de la API
A continuación se describen los endpoints principales:
Autenticación
POST /api/auth/google: Autentica a un usuario con un token de Google. Crea el usuario si no existe y devuelve un token JWT de la aplicación.
Playlist de YouTube
GET /api/youtube-playlist: Devuelve la lista de reproducción de videos de YouTube.POST /api/youtube-video: Añade un nuevo video a la lista de reproducción.
Control Remoto
GET /cmd?consulta=<comando>: Endpoint para enviar comandos a un reproductor (ej.play_video,pausa_video).
Tecnologías
- Node.js: Entorno de ejecución de JavaScript.
- Express.js: Framework web para Node.js.
- MySQL: Sistema de gestión de bases de datos.
- jsonwebtoken: Para la creación y verificación de tokens JWT.
- google-auth-library: Para verificar los tokens de ID de Google.
- dotenv: Para la gestión de variables de entorno.
- EJS: Motor de plantillas para servir el panel de control.
Instalación y Uso
-
Clona el repositorio:
git clone <URL_DEL_REPOSITORIO> cd audio_control -
Instala las dependencias:
npm install -
Configura las variables de entorno: Crea un archivo
.enven la raíz del proyecto (src/.env). Consulta la sección Variables de Entorno. -
Inicia el servidor:
npm startEl servidor se iniciará en el puerto 2000 (o el que se especifique).
Variables de Entorno
Crea un archivo .env en el directorio src/ con las siguientes variables. Es crucial para la seguridad y el funcionamiento de la aplicación.
# Secret para firmar los tokens JWT (usa un valor largo y aleatorio)
JWT_SECRET=tu_super_secreto_para_jwt
# Credenciales de Google Cloud para OAuth 2.0
GOOGLE_CLIENT_ID=tu_client_id_de_google.apps.googleusercontent.com
Estructura de la Base de Datos
El proyecto requiere una base de datos MySQL con al menos las siguientes tablas:
Tabla users:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
google_id VARCHAR(255) UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
name VARCHAR(255),
picture_url VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Tabla rep_youtube:
CREATE TABLE rep_youtube (
id INT AUTO_INCREMENT PRIMARY KEY,
video_id VARCHAR(50) NOT NULL,
title VARCHAR(255) NOT NULL,
channel VARCHAR(255),
thumbnail VARCHAR(255),
duration VARCHAR(20),
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);