Update package-lock.json and package.json to reflect openai version change from 4.80.1 to 4.82.0
This commit is contained in:
112
README.md
112
README.md
@@ -0,0 +1,112 @@
|
||||
# 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](#acerca-del-proyecto)
|
||||
- [Estructura de la API](#estructura-de-la-api)
|
||||
- [Tecnologías](#tecnologías)
|
||||
- [Instalación y Uso](#instalación-y-uso)
|
||||
- [Variables de Entorno](#variables-de-entorno)
|
||||
- [Estructura de la Base de Datos](#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
|
||||
|
||||
1. **Clona el repositorio:**
|
||||
```bash
|
||||
git clone <URL_DEL_REPOSITORIO>
|
||||
cd audio_control
|
||||
```
|
||||
|
||||
2. **Instala las dependencias:**
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. **Configura las variables de entorno:**
|
||||
Crea un archivo `.env` en la raíz del proyecto (`src/.env`). Consulta la sección Variables de Entorno.
|
||||
|
||||
4. **Inicia el servidor:**
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
El 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`**:
|
||||
```sql
|
||||
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`**:
|
||||
```sql
|
||||
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
|
||||
);
|
||||
```
|
||||
Reference in New Issue
Block a user