Sincroniza tus playlists de Spotify a YouTube Music de forma automatica, preservando el orden y los metadatos de cada cancion.
- Conecta tu cuenta de Spotify y tu cuenta de Google (YouTube Music).
- Seleccionas una playlist de Spotify y KeepSyn la replica en YouTube Music.
- El motor de matching busca cada cancion por ISRC exacto, firma normalizada y similitud fuzzy.
- El progreso es visible en tiempo real y el proceso es tolerante a errores: si una cancion no se encuentra, continua con el resto y reporta los fallos.
- Playlists grandes se procesan en chunks para evitar timeouts y controlar la quota de la API de YouTube.
Flutter (Android/iOS)
└─ Firebase Auth (Google Sign-In)
└─ Spotify OAuth (PKCE)
└─ API REST ──► Firebase Cloud Functions (Node.js)
└─ syncJobWorker (Cloud Tasks)
└─ Spotify API (source)
└─ ytmusic-api + YouTube Data API v3 (target)
└─ Firestore (estado del job, cache de busqueda)
Stack:
- Frontend: Flutter · Riverpod · GoRouter · Dio · cloud_firestore
- Backend: Firebase Cloud Functions v2 · Cloud Tasks · Firestore · Secret Manager
- Busqueda de musica: ytmusic-api (sin quota) + YouTube Data API v3 (operaciones de playlist)
- Flutter 3.x
- Node.js 22+
- Firebase CLI (
npm install -g firebase-tools) - Proyecto en Firebase con Firestore, Functions y Authentication habilitados
- App registrada en Spotify Developer Dashboard
- OAuth app en Google Cloud Console con YouTube Data API v3 habilitada
cp env/app_config.example.json env/app_config.local.json
# Edita app_config.local.json con tus valores realesflutter run --dart-define-from-file=env/app_config.local.jsonVer docs/ENV_SETUP.md para descripcion de cada variable.
cd functions
firebase functions:secrets:set SPOTIFY_CLIENT_ID
firebase functions:secrets:set SPOTIFY_CLIENT_SECRET
firebase functions:secrets:set SPOTIFY_REDIRECT_URI
firebase functions:secrets:set YOUTUBE_CLIENT_ID
firebase functions:secrets:set YOUTUBE_CLIENT_SECRETVer docs/DEPLOY_FUNCTIONS.md para el proceso completo de despliegue, incluyendo la cola de Cloud Tasks y el TTL de Firestore.
| Documento | Contenido |
|---|---|
| docs/ENV_SETUP.md | Variables de entorno Flutter y backend |
| docs/DEPLOY_FUNCTIONS.md | Despliegue de Cloud Functions paso a paso |
| docs/SYNC_ENGINE_BACKEND.md | Arquitectura del sync engine, matching pipeline, Firestore schema, debugging |
MIT — ver LICENSE.