Commit Graph
11 Commits
Author SHA1 Message Date
Michael cdc0a4671c feat: implement podcast controller for subscription management, search, and discovery functionality 2026-04-16 13:32:26 +02:00
Michael d81b3a6516 feat: implement podcast subscription management, library page, and associated service methods 2026-04-16 13:28:23 +02:00
Michael 872ef5c31a feat: implement backend podcast subscription controllers and frontend library page with optimistic updates 2026-04-16 13:07:46 +02:00
Michael 34db9e2542 feat: implement podcast controller for subscription management, discovery, and search functionality 2026-04-16 12:46:22 +02:00
MichaelandClaude Sonnet 4.6 a8cef14226 Rend l'abonnement idempotent (409 → 200)
Abonner deux fois au même podcast retourne 200 au lieu de 409.
Tous les messages d'erreur traduits en français.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:40:22 +02:00
MichaelandClaude Sonnet 4.6 eb6821ca76 Corrige TypeError dans subscribeFromDiscovery
result.podcast est un plain object (toJSON()), appeler .toJSON() dessus crashe.
Fix: refetch le podcast depuis MongoDB après création pour avoir un vrai Document Mongoose.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:29:55 +02:00
MichaelandClaude Sonnet 4.6 3914f28e19 Corrige subscribe 500 et trending 500
- subscribe: passe undefined à createPodcastFromRss pour qu'il parse vraiment le flux RSS (bug: on passait feedData avec episodes:[] vide)
- trending/discover: retournent [] au lieu de 500 si l'API iTunes échoue
- trending: utilise l'iTunes RSS officiel (itunes.apple.com/fr/rss/toppodcasts) au lieu de l'API Marketing Tools instable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:24:44 +02:00
MichaelandClaude Sonnet 4.6 59144e9ce6 Remplace PodcastIndex par iTunes Search API (gratuit, sans clé)
- Réécriture complète de podcastIndexService avec l'API iTunes d'Apple
- Recherche de podcasts : itunes.apple.com/search (gratuit, pas d'auth)
- Tendances : top podcasts France via rss.applemarketingtools.com + lookup RSS URLs
- Suppression des vérifications isConfigured() dans le contrôleur

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:21:26 +02:00
MichaelandClaude Sonnet 4.6 c7a5c171d1 Traduit l'UI en français et corrige les bugs de recherche/abonnement
- Traduit toutes les pages et composants en français (Dashboard, Login, Discover, Navigation, Header, EpisodeCard, AudioPlayer)
- Corrige l'erreur 500 sur /api/podcasts/discover : z.coerce.number() au lieu de z.number() pour limit/offset (paramètres query string)
- Corrige l'abonnement manuel via URL RSS : crée le podcast depuis le flux RSS au lieu de renvoyer 400

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:15:42 +02:00
Michael 9bb61cc8a7 feat: implement podcast discovery with PodcastIndex API integration and Discover page 2026-04-16 10:01:05 +02:00
Michael 8c00a1b0f5 feat: implement authentication and core API endpoints - auth, podcasts, episodes 2026-04-16 09:55:15 +02:00