← Back to app
Updated: May 2026

Project Roadmap

Music Industry Intelligence Dashboard — portfolio project

18
Done
3
In progress
6
Planned
2
Blocked
APIs integradas — 7 activas, 1 deprecada
Spotify
Followers, popularidad, géneros, top tracks, discografía (álbumes + singles separados), links directos a canciones y artista, artistas relacionados
Last.fm
Listeners globales, playcount all-time (stat "Total Plays"), tags de género, artistas similares como fallback
MusicBrainz
País de origen, tipo artista (solista/grupo), año de fundación. Sin API key — rate limit 1 req/s
Deezer
Previews 30 segundos por canción. Reemplaza Spotify (deprecó previews nov 2024). Sin API key
Ticketmaster
Shows próximos por attractionId (preciso, global). Precio + moneda real por país. Cubre US, México, España, UK, Europa y más
Setlist.fm
Historial completo de giras: fechas, ciudades, venues. Fuente del Momentum Score (tour activity)
YouTube Data API
Top videos del canal oficial (no canales de fans). Ordenados por views. Límite: ~45 artistas/día con quota gratuita
Bandsintown ✗
API deprecada 2024 — IAM deny (403). Es la fuente exacta que usa Spotify para conciertos. Sin alternativa gratuita disponible
Completado
Done
Artist header completo
Foto, nombre, géneros. Origen con bandera (🇵🇷 Puerto Rico · Solo Artist · b. 1994). Botón "Open on Spotify" verde con SVG logo.
Done
4 stats: Spotify Followers · Total Plays · Upcoming Shows · Albums
Total Plays = Last.fm playcount all-time (proxy de relevancia histórica). "Markets" fue eliminado: Spotify deprecó available_markets en nov 2024 y siempre devolvía 0.
Done
Industry Presence score (Momentum Badge)
Score 0–100: Spotify followers (30pts) + popularity (30pts) + upcoming shows (20pts) + tour history (20pts). Labels: Rising / Stable / Declining.
Done
Top Tracks con preview 30s y links a Spotify
5 canciones top de Spotify. Preview via Deezer. Link a Spotify por canción. Album cover. Play/stop toggle.
Done
Discografía: Álbumes + Singles por separado
Grid de álbumes completos (album_type=album, >1 track). Lista de últimos 8 singles. Deduplicados por nombre. Ordenados por fecha descendente.
Done
Upcoming Shows con búsqueda por attractionId
Más preciso que keyword — evita tribute acts y elimina falsos positivos. Solo fechas futuras. Moneda correcta por país (EUR/GBP/MXN/etc.). Google Maps + link a Ticketmaster.
Ticketmaster tiene mejor cobertura en US/UK. Artistas del sur de Europa o pequeños pueden tener huecos.
Done
Filtro de eventos: tribute nights + capacidad mínima
Elimina "Latin Night - Bad Bunny Night" y similares. Dos capas: keywords en título + capacidad mínima según popularidad del artista.
Done
YouTube: solo canal oficial del artista
Busca el canal oficial por nombre antes de traer videos. Evita canales de fans y compilaciones. Fallback a keyword search si no encuentra canal.
~45 artistas/día con quota gratuita de YouTube (10k units/día)
Done
Similar Artists clickeables (Spotify + Last.fm fallback)
Click en un artista → búsqueda directa. Filtro de nombres raros con "/" o "&".
Done
Cache 7 días en PostgreSQL
Primera búsqueda: ~5-8s (8 APIs en paralelo). Siguientes búsquedas: instantáneas. Upsert automático con timestamp.
En progreso / próximo paso
WIP
URL params: ?artist=bad+bunny
La URL cambia cuando buscas un artista. Permite compartir links directos. Hace la app parecer mucho más completa. ~30 min de trabajo.
Quick win — alto impacto visual, poco esfuerzo
WIP
Placeholder imagen cuando no hay foto
Si el artista no tiene imagen en Spotify, el avatar queda roto. Necesita un SVG genérico o las iniciales del artista como fallback.
WIP
Responsive CSS para mobile
Stats-row en pantallas <400px se aprieta. Momentum badge puede desbordarse. Autocomplete con top fijo puede desalinearse en mobile.
Bloqueado (sin solución gratuita)
Blocked
Bandsintown — fuente de conciertos de Spotify
API deprecada 2024. IAM policy deny en todos los endpoints. Sería perfecta: es exactamente lo que usa Spotify para su pestaña "Concerts". Spotify tampoco expone conciertos en su API pública.
Songkick tampoco — requiere acuerdo comercial para nuevos devs desde 2018
Blocked
Monthly Listeners de Spotify
El dato más visible de Spotify (ej. "45M monthly listeners") no está disponible en la API pública. Ningún endpoint oficial ni no oficial lo expone.
available_markets también deprecado nov 2024 → Markets stat eliminado
Ideas para v2
Todo
Wikipedia Pageviews — indicador de interés público
API gratuita de Wikimedia: views mensuales de la Wikipedia del artista. Señal de "¿está en boca de todos ahora?" — diferente a seguidores o plays.
Todo
GitHub Actions — pre-cache top 100 artistas semanal
Job automático que refresca los artistas más buscados. El autocomplete siempre tendrá buenos resultados y el cold-start en producción será raro.
Todo
Endpoint DELETE /api/cache/{artist}
Invalidar manualmente el cache de un artista sin ir a psql. Útil durante desarrollo y para forzar actualizaciones de datos.
Idea
Share button con URL del artista
Botón "Copy link" que genera ?artist=rosalia para compartir. Depende de URL params.
Idea
Setlist.fm — verificar nombre del primer resultado
Actualmente toma el primer resultado sin validar. Un tribute act con nombre similar podría contaminar el historial de giras.
Idea
Watchlist de artistas (requiere auth)
Guardar artistas favoritos para monitorear. Login con Google. Convierte el portfolio project en un producto real.
Deploy — cuando estés listo

Stack gratuito: Render.com (backend, duerme sin uso) + GitHub Pages (frontend, siempre activo) + Supabase (PostgreSQL, 500MB gratis). Total: $0/mes. Alternativa: Railway $5/mes (backend no duerme, más profesional).

1
Supabase — PostgreSQL gratis
Crear proyecto en supabase.com → Settings → Database → copiar connection string → guardar como DATABASE_URL
2
Render.com — Backend FastAPI
New Web Service → conectar repo GitHub → Build: pip install -r requirements.txt → Start: uvicorn main:app --host 0.0.0.0 --port $PORT → cargar env vars → Deploy
3
Actualizar API_BASE en app.js
Cambiar la URL de Railway placeholder por la URL real de Render (ej: https://soundcard-music.onrender.com). Commit y push.
4
GitHub Pages — Frontend
Repo → Settings → Pages → Branch: main → Folder: /frontend → URL resultante: tu-usuario.github.io/artist-radar/frontend/
5
Variables de entorno en Render
DATABASE_URL · SPOTIFY_CLIENT_ID · SPOTIFY_CLIENT_SECRET · LASTFM_API_KEY · TICKETMASTER_API_KEY · SETLISTFM_API_KEY · YOUTUBE_API_KEY