Una aplicación web full stack que se integra con la API de Spotify para mostrar estadísticas personalizadas del usuario, incluyendo sus artistas principales, álbumes, pistas, y permite búsquedas en todo el catálogo de Spotify.
- ✅ Autenticación OAuth 2.0 con Spotify
- 🎧 Visualización de los 10 artistas principales
- 🔍 Vista detallada de artistas, álbumes y canciones
- 🧠 Búsqueda de artistas, álbumes, pistas y playlists
▶️ Reproductor embebido de previews- 🔐 Sesión persistente mediante cookies HttpOnly
- 🔁 Refresh automático del token de acceso sin intervención del usuario
- Java 21
- Spring Boot
- Gradle
- Spotify Web API
- OAuth 2.0
- JUnit + Mockito
- React + TypeScript
- Vite
- React Router
- Tailwind CSS
- Jest + React Testing Library
- Node.js y npm
- Java 21
- Spotify Developer Account
- (Opcional) Docker
- Crea una aplicación en el Spotify Developer Dashboard.
- Obtén tu
client_idyclient_secret. - Registra el siguiente redirect URI:
http://127.0.0.1:8080/auth/spotify/callback
Sigue estos pasos para ejecutar el proyecto localmente en tu máquina.
git clone https://github.com/tu-usuario/BreakableToy2.git
cd BreakableToy2Modifica el archivo src/main/resources/application.properties.example eliminando el .example y agrega tus valores (no se sube a Git):
spotify.client-id=${SPOTIFY_CLIENT_ID}
spotify.client-secret=${SPOTIFY_CLIENT_SECRET}
spotify.redirect-uri=http://127.0.0.1:8080/auth/spotify/callbackcd bt2-backendInicia el servidor backend:
./gradlew bootRunCrea un archivo .env en la raíz de bt2-frontend con esta línea:
VITE_API_URL=http://127.0.0.1:9090Ejecuta el proyecto con:
cd ../bt2-frontend
npm install
npm run devAccede a la aplicación en: http://127.0.0.1:9090
- Al iniciar sesión, se guarda el
access_tokenyrefresh_tokenen cookiesHttpOnly. - Si el
access_tokenexpira, el backend lo refresca automáticamente con elrefresh_token(válido por 7 días). - La sesión se mantiene activa incluso al cerrar y reabrir la pestaña.
BreakableToy2/
├── bt2-backend/ # Backend en Spring Boot
│ ├── src/
│ └── build.gradle
├── bt2-frontend/ # Frontend en React + Vite
│ ├── src/
│ └── vite.config.ts
├── README.md
Tadeo Lozano
