José.Montero Volver al portfolio

Proyecto personal · Full Stack · Spotify API

SpotiClean

Aplicación web full stack para analizar playlists de Spotify, detectar canciones duplicadas y decidir de forma segura qué versiones conservar o eliminar.

Tecnologías

SymfonyPHPReactTypeScriptViteDockerSpotify Web APIOAuth 2.0

El proyecto

Del problema a una solución útil.

SpotiClean nace de un problema real: una playlist grande puede acumular canciones repetidas difíciles de localizar manualmente. La aplicación automatiza el análisis sin delegar la decisión final en un algoritmo. Identifica los conflictos, explica el nivel de confianza y permite revisar qué conservar antes de modificar Spotify.

Autenticación segura mediante Spotify OAuth 2.0.
Consulta paginada de playlists con miles de canciones.
Detección exacta mediante el identificador de Spotify.
Identificación de una misma grabación mediante ISRC.
Posibles coincidencias por metadatos, artistas y duración.
Clasificación de resultados según el nivel de confianza.
Selección manual de la versión que se desea conservar.
Confirmación explícita antes de cualquier eliminación.
Validación del estado actual para evitar cambios sobre datos desactualizados.
Interfaz responsive desarrollada con React y TypeScript.

Arquitectura y desarrollo

Frontend desacoplado y backend especializado.

React, TypeScript y Vite gestionan la navegación, la visualización del análisis y el proceso de selección. Symfony concentra la integración con Spotify, OAuth, la gestión de tokens y la lógica de análisis. Ambos servicios se ejecutan de forma aislada y reproducible mediante Docker.

Detección de duplicados

No todas las canciones repetidas son iguales.

El análisis distingue coincidencias exactas, pistas distintas que comparten ISRC y posibles duplicados calculados mediante título, artistas, duración y metadatos normalizados. Los casos dudosos siempre se presentan para revisión manual, reduciendo falsos positivos.

Integración con Spotify

Modificar una playlist sin perder el control.

Los tokens se gestionan desde el backend y no se exponen directamente al frontend. Antes de eliminar, Symfony comprueba de nuevo el estado de la playlist y valida la selección para cancelar cualquier operación potencialmente incorrecta si los datos han cambiado desde el análisis.

Dentro del producto

Experiencia de análisis

03 vistas
Vista conceptual de la pantalla de inicio de sesión en SpotiClean
01 — Vista conceptual de la pantalla de inicio de sesión en SpotiClean
Vista conceptual del análisis y selección de duplicados en SpotiClean
02 — Vista conceptual del análisis y selección de duplicados en SpotiClean
Vista conceptual del detalle de una playlist en SpotiClean
03 — Vista conceptual del detalle de una playlist en SpotiClean

Siguiente caso

Medical Education App

Ver proyecto