Transfiere tus listas de reproducción y watchlists entre plataformas de streaming.
Música: Spotify ↔ Apple Music ↔ YouTube Music
Películas/series: Trakt.tv (Netflix, HBO, Disney+ etc. no tienen APIs públicas — Trakt funciona como puente)
- Monorepo npm workspaces —
client/(React + Vite),server/(Express),shared/(types) - Node 26, TypeScript, Podman containers
cp .env.example .env # completa credenciales (ver abajo)
npm install
npm run dev # servidor :3001 + cliente :5173O con contenedores:
podman-compose build
podman-compose up -d # http://localhost:5173Cada plataforma necesita registrarse como aplicación OAuth:
| Plataforma | Qué necesitas | Dónde crearlo |
|---|---|---|
| Spotify | SPOTIFY_CLIENT_ID + SPOTIFY_CLIENT_SECRET |
https://developer.spotify.com/dashboard |
| YouTube Music | GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET (con YouTube Data API v3) |
https://console.cloud.google.com |
| Apple Music | Apple Developer account + MusicKit Key (.p8) | https://developer.apple.com |
| Trakt.tv | TRAKT_CLIENT_ID + TRAKT_CLIENT_SECRET |
https://trakt.tv/oauth/applications |
Todas las redirect URIs apuntan a http://localhost:3001/auth/:platform/callback.
| Comando | Descripción |
|---|---|
npm run dev |
Servidor + cliente en simultáneo |
npm run dev:server |
Solo servidor (hot reload) |
npm run dev:client |
Solo cliente (Vite) |
npm run build |
Build de todos los workspaces |
npm run typecheck |
TypeScript check completo |
podman-compose up -d |
Contenedores |
- Conecta tus cuentas desde el dashboard
- Explora las listas de una plataforma origen
- Selecciona una lista y elige el destino
- La app lee el contenido y lo recrea en la plataforma destino
El matching entre plataformas es best-effort: por ID en Spotify ↔ Apple, por búsqueda (título + artista) en YouTube.
client/src/pages/ — Dashboard, PlatformPage, TransferPage
server/src/services/ — spotify, youtube-music, apple-music, trakt
server/src/routes/ — auth, platforms, transfer
shared/ — tipos compartidos TypeScript
MIT