diff --git a/frontend/src/pages/Landing.tsx b/frontend/src/pages/Landing.tsx
index e5c62e5..f8db516 100644
--- a/frontend/src/pages/Landing.tsx
+++ b/frontend/src/pages/Landing.tsx
@@ -5,7 +5,7 @@ const features = [
{
icon: ListMusic,
title: 'Import Your Music',
- description: 'Connect Spotify and import your playlists to build your taste profile.',
+ description: 'Import your playlists from YouTube Music, Last.fm, or paste your songs to build your taste profile.',
},
{
icon: Sparkles,
diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx
index 0eb1fae..6d13a5b 100644
--- a/frontend/src/pages/Login.tsx
+++ b/frontend/src/pages/Login.tsx
@@ -2,7 +2,7 @@ import { useState } from 'react'
import { Link, useNavigate } from 'react-router-dom'
import { Disc3, Mail, Lock, Loader2 } from 'lucide-react'
import { useAuth } from '../lib/auth'
-import { login as apiLogin, getSpotifyAuthUrl } from '../lib/api'
+import { login as apiLogin } from '../lib/api'
export default function Login() {
const [email, setEmail] = useState('')
@@ -28,15 +28,6 @@ export default function Login() {
}
}
- const handleSpotifyLogin = async () => {
- try {
- const { url } = await getSpotifyAuthUrl()
- window.location.href = url
- } catch {
- setError('Could not connect to Spotify')
- }
- }
-
return (
{/* Header */}
@@ -113,22 +104,6 @@ export default function Login() {
-
-
-
-
-
-
- Continue with Spotify
-
-
Don't have an account?{' '}
diff --git a/frontend/src/pages/Playlists.tsx b/frontend/src/pages/Playlists.tsx
index c1cdd5d..c01e3bb 100644
--- a/frontend/src/pages/Playlists.tsx
+++ b/frontend/src/pages/Playlists.tsx
@@ -1,17 +1,13 @@
import { useState, useEffect } from 'react'
import { Link } from 'react-router-dom'
-import { ListMusic, Plus, Loader2, Music, ChevronRight, Download, X, Play, Link2, ClipboardPaste } from 'lucide-react'
-import { getPlaylists, getSpotifyPlaylists, importSpotifyPlaylist, importYouTubePlaylist, previewLastfm, importLastfm, importPastedSongs, type PlaylistResponse, type SpotifyPlaylistItem, type LastfmPreviewResponse } from '../lib/api'
+import { ListMusic, Loader2, Music, ChevronRight, Download, X, Play, Link2, ClipboardPaste } from 'lucide-react'
+import { getPlaylists, importYouTubePlaylist, previewLastfm, importLastfm, importPastedSongs, type PlaylistResponse, type LastfmPreviewResponse } from '../lib/api'
export default function Playlists() {
const [playlists, setPlaylists] = useState([])
- const [spotifyPlaylists, setSpotifyPlaylists] = useState([])
- const [showImport, setShowImport] = useState(false)
const [showYouTubeImport, setShowYouTubeImport] = useState(false)
const [youtubeUrl, setPlayUrl] = useState('')
const [importingYouTube, setImportingYouTube] = useState(false)
- const [importing, setImporting] = useState(null)
- const [loadingSpotify, setLoadingSpotify] = useState(false)
const [loading, setLoading] = useState(true)
const [error, setError] = useState('')
const [showLastfmImport, setShowLastfmImport] = useState(false)
@@ -40,19 +36,6 @@ export default function Playlists() {
}
}
- const openImportModal = async () => {
- setShowImport(true)
- setLoadingSpotify(true)
- try {
- const data = await getSpotifyPlaylists()
- setSpotifyPlaylists(data)
- } catch {
- setError('Failed to load Spotify playlists. Make sure your Spotify account is connected.')
- } finally {
- setLoadingSpotify(false)
- }
- }
-
const handleYouTubeImport = async () => {
if (!youtubeUrl.trim()) return
setImportingYouTube(true)
@@ -122,19 +105,6 @@ export default function Playlists() {
.split('\n')
.filter((line) => line.trim().length > 0).length
- const handleImport = async (playlistId: string) => {
- setImporting(playlistId)
- try {
- const imported = await importSpotifyPlaylist(playlistId)
- setPlaylists((prev) => [...prev, imported])
- setSpotifyPlaylists((prev) => prev.filter((p) => p.id !== playlistId))
- } catch (err: any) {
- setError(err.response?.data?.detail || 'Failed to import playlist')
- } finally {
- setImporting(null)
- }
- }
-
if (loading) {
return (
@@ -151,13 +121,6 @@ export default function Playlists() {
Manage your imported playlists
-
-
- Import from Spotify
-
setShowYouTubeImport(true)}
className="flex items-center gap-2 px-5 py-2.5 bg-red-600 text-white font-medium rounded-xl hover:bg-red-700 transition-colors cursor-pointer border-none text-sm"
@@ -196,16 +159,9 @@ export default function Playlists() {
No playlists yet
- Import your playlists from Spotify or YouTube Music to start getting personalized music recommendations
+ Import your playlists from YouTube Music, Last.fm, or paste your songs to start getting personalized music recommendations
-
-
- Import from Spotify
-
setShowYouTubeImport(true)}
className="inline-flex items-center gap-2 px-6 py-3 bg-red-600 text-white font-medium rounded-xl hover:bg-red-700 transition-colors cursor-pointer border-none text-sm"
@@ -488,73 +444,6 @@ export default function Playlists() {
)}
- {/* Import Modal */}
- {showImport && (
-
-
-
-
Import from Spotify
- setShowImport(false)}
- className="p-1.5 rounded-lg hover:bg-purple-50 transition-colors cursor-pointer bg-transparent border-none"
- >
-
-
-
-
-
- {loadingSpotify ? (
-
-
-
- ) : spotifyPlaylists.length === 0 ? (
-
-
No playlists found on Spotify
-
- ) : (
-
- {spotifyPlaylists.map((sp) => (
-
-
- {sp.image_url ? (
-
- ) : (
-
- )}
-
-
-
{sp.name}
-
- {sp.track_count} tracks · {sp.owner}
-
-
-
handleImport(sp.id)}
- disabled={importing === sp.id}
- className="px-4 py-2 bg-purple text-white text-xs font-medium rounded-lg hover:bg-purple-dark transition-colors cursor-pointer border-none disabled:opacity-50 flex items-center gap-1.5"
- >
- {importing === sp.id ? (
-
- ) : (
-
- )}
- Import
-
-
- ))}
-
- )}
-
-
-
- )}
)
}
diff --git a/frontend/src/pages/Register.tsx b/frontend/src/pages/Register.tsx
index 613b5d0..cae57a4 100644
--- a/frontend/src/pages/Register.tsx
+++ b/frontend/src/pages/Register.tsx
@@ -2,7 +2,7 @@ import { useState } from 'react'
import { Link, useNavigate } from 'react-router-dom'
import { Disc3, Mail, Lock, User, Loader2 } from 'lucide-react'
import { useAuth } from '../lib/auth'
-import { register as apiRegister, getSpotifyAuthUrl } from '../lib/api'
+import { register as apiRegister } from '../lib/api'
export default function Register() {
const [name, setName] = useState('')
@@ -29,15 +29,6 @@ export default function Register() {
}
}
- const handleSpotifyLogin = async () => {
- try {
- const { url } = await getSpotifyAuthUrl()
- window.location.href = url
- } catch {
- setError('Could not connect to Spotify')
- }
- }
-
return (
{/* Header */}
@@ -133,22 +124,6 @@ export default function Register() {
-
-
-
-
-
-
- Continue with Spotify
-
-
Already have an account?{' '}
diff --git a/frontend/src/pages/TasteProfilePage.tsx b/frontend/src/pages/TasteProfilePage.tsx
index 9d2297b..ee38bca 100644
--- a/frontend/src/pages/TasteProfilePage.tsx
+++ b/frontend/src/pages/TasteProfilePage.tsx
@@ -93,7 +93,7 @@ export default function TasteProfilePage() {
Genre DNA
{profile.genre_breakdown.length === 0 ? (
- No genre data yet. Import playlists with Spotify to see your genre breakdown.
+ No genre data yet. Import playlists to see your genre breakdown.
) : (