1. Deezer App anlegen: https://developers.deezer.com/myapps → Redirect URI http://localhost:8080/auth/callback 2. Backend starten: cd libredeck-web DEEZER_APP_ID=xxx DEEZER_APP_SECRET=yyy mvn spring-boot:run 3. Android: In app/build.gradle die BACKEND_URL anpassen, dann in Android Studio öffnen und builden 4. Gradle Wrapper fehlt noch im Android-Projekt — entweder gradle wrapper ausführen oder aus linkster-android kopieren Was gebaut: 7 neue Backend-Dateien: - AppleMusicConfig – Properties: apple.music.team-id, apple.music.key-id, apple.music.private-key - AppleMusicTokenGenerator – erzeugt und cached den Developer-JWT (ES256, standard Java-Crypto, keine neuen Deps) - AppleMusicTokenStore – Session-scoped Storage für den Music User Token (wie bei Spotify/Tidal) - AppleMusicApiClient – HTTP-Client gegen api.music.apple.com; unterstützt Catalog- und Library-Playlists, ThreadLocal-Token-Pinning für async Jobs - AppleMusicProvider – implementiert StreamingProvider, wird automatisch im Registry registriert - AppleMusicAuthRequiredException - AppleMusicController – Endpunkte: /apple/configured, /apple/connected, /apple/developer-token, /apple/token, /apple/disconnect, /apple/playlists Geändert: - GenerateController – Apple Music Auth-Check (nur für Library-Playlists) + Token-Pinning - index.html – 4. Service "Apple Music" im Switcher, MusicKit JS v3 Auth-Flow, Playlist-Picker Konfiguration (in .env eintragen): APPLE_MUSIC_TEAM_ID=XXXXXXXXXX APPLE_MUSIC_KEY_ID=XXXXXXXXXX APPLE_MUSIC_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY----- Benötigt wird ein MusicKit-Key aus dem Apple Developer Portal. Ist nichts konfiguriert, bleibt das Panel sichtbar aber zeigt "nicht konfiguriert".