Skip to content

andresayac/dayax-music

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dayax Logo

Dayax

🎵 Tu reproductor de música streaming personal

Vue 3 Vite PrimeVue Express pnpm Node.js


¿Qué es Dayax?

Dayax es un reproductor de música streaming que conecta con YouTube Music a través de una API propia. Diseñado con una interfaz moderna estilo Spotify, permite explorar música, buscar canciones, reproducir audio en streaming y gestionar colas de reproducción — todo desde el navegador.

Tech Stack

Capa Tecnología
Frontend Vue 3 · Vite 7 · TypeScript
UI PrimeVue 4 · PrimeIcons · Inter font
State Pinia 3
HTTP Axios
Backend Express 5 · Node.js
YouTube youtubei.js (Innertube API)
Monorepo pnpm workspaces

Estructura del Proyecto

dayax/
├── dayax-api/              → @dayax/api  (Backend)
│   └── src/
│       ├── server.js           Servidor Express
│       ├── innertube.js        Cliente Innertube (YouTube Music)
│       ├── mappers.js          Mapeo de datos YouTube → Dayax
│       └── routes/
│           ├── browse.js       Explorar, artistas, álbumes, playlists
│           ├── search.js       Búsqueda de música
│           └── stream.js       Streaming y descarga de audio
│
├── dayax-app/              → @dayax/app  (Frontend)
│   ├── index.html
│   ├── vite.config.ts
│   └── src/
│       ├── main.ts             Entrada de la app
│       ├── App.vue             Layout principal
│       ├── api/                Capa de comunicación con el API
│       ├── components/         Componentes reutilizables
│       │   ├── layout/         Sidebar, PlayerBar, Header
│       │   └── shared/         TrackItem, MediaCard, etc.
│       ├── stores/             Pinia stores
│       │   ├── player.ts       Reproductor de audio
│       │   ├── search.ts       Estado de búsqueda
│       │   ├── favorites.ts    Favoritos locales
│       │   └── settings.ts     Configuración del usuario
│       ├── views/              Páginas de la app
│       │   ├── ExploreView     Inicio / Explora
│       │   ├── SearchView      Búsqueda
│       │   ├── NowPlayingView  Reproducción actual
│       │   ├── QueueView       Cola de reproducción
│       │   ├── ArtistView      Perfil de artista
│       │   ├── AlbumView       Detalle de álbum
│       │   ├── PlaylistView    Detalle de playlist
│       │   ├── GenreView       Género musical
│       │   ├── DiscoverView    Descubrir
│       │   └── FavoritesView   Favoritos
│       ├── router/             Vue Router
│       └── assets/             Estilos globales
│
├── package.json            Workspace root
├── pnpm-workspace.yaml     Configuración de workspaces
├── pnpm-lock.yaml          Lock file unificado
├── .npmrc                  Configuración de pnpm
└── .gitignore

Requisitos

  • Node.js ^20.19.0 o >=22.12.0
  • pnpm >=9 — instálalo con npm install -g pnpm

Instalación

# Clonar el repositorio
git clone https://github.com/andresayac/dayax-music.git
cd dayax-music

# Instalar todas las dependencias
pnpm install

Configuración de Entorno

Cada paquete tiene un archivo .env.example con las variables disponibles. Copia y ajusta según tu entorno:

# API (dayax-api/.env)
PORT=3001
ALLOWED_ORIGINS=https://tu-dominio.com    # orígenes CORS permitidos (separados por coma)

# Frontend (dayax-app/.env)
VITE_API_BASE=                             # vacío en dev (usa proxy), URL completa en producción

En desarrollo no necesitas crear .env — los valores por defecto funcionan automáticamente.

Desarrollo

# Iniciar AMBOS servidores en paralelo (API + App)
pnpm dev

# Solo el backend (API en http://localhost:3001)
pnpm dev:api

# Solo el frontend (App en http://localhost:3333)
pnpm dev:app

El frontend tiene un proxy configurado en vite.config.ts que redirige las peticiones /api/* al backend automáticamente, así que en desarrollo no necesitas preocuparte por CORS.

Build de Producción

# Compilar el frontend para producción
pnpm build

# Los archivos se generan en dayax-app/dist/

API Endpoints

El backend expone los siguientes endpoints:

Método Ruta Descripción
GET /api/health Health check del servidor
GET /api/search?q=... Buscar canciones, artistas, álbumes
GET /api/explore Página de exploración (home)
GET /api/artist/:id Perfil de artista
GET /api/album/:id Detalle de álbum
GET /api/playlist/:id Detalle de playlist
GET /api/track/:id Info de un track
GET /api/stream/:videoId Stream de audio (soporta Range)
GET /api/stream/download/:videoId Descargar audio
GET /api/img?url=... Proxy de imágenes (CDN YouTube)

Scripts Disponibles

Script Comando Descripción
dev pnpm dev Inicia API y App en paralelo
dev:api pnpm dev:api Solo el backend (Express + Innertube)
dev:app pnpm dev:app Solo el frontend (Vite + Vue)
build pnpm build Build de producción del frontend

Licencia

Este proyecto es privado y de uso personal.

About

Dayax es un reproductor de música streaming que conecta con YouTube Music a través de una API propia. Diseñado con una interfaz moderna estilo Spotify, permite explorar música, buscar canciones, reproducir audio en streaming y gestionar colas de reproducción — todo desde el navegador.

Resources

Stars

Watchers

Forks

Contributors