Michael and Claude Sonnet 4.5
a3225cb4c4
feat: light/dark theme (cream+gold+grey), reduced radii, stagger animations, search fallback
...
- globals.css: full dual-theme system via .light-theme/.dark-theme classes
→ Dark: deep navy with indigo/cyan glow gradients
→ Light: warm cream #f7f3eb with gold top-left & grey bottom-right gradients
→ Radius tokens: --radius-card 1rem, --radius-panel 1.25rem (sharper cards)
→ New animations: float, scale-in, shimmer skeleton, ping-slow, spin-slow,
glow-beat, gold-shimmer + stagger-grid cascade (up to 20 items)
- tailwind.config.js: reduce 2xl/3xl/4xl radii to match CSS vars; add accent-gold
- Navigation.tsx: add Sun/Moon toggle button using useTheme()
- Dashboard.tsx: shimmer skeletons, stagger-grid on episode grid
- Trending.tsx: stagger-grid on podcast grid
- podcastController.ts: iTunes search fallback → local DB regex search
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-04-17 10:51:21 +02:00
Michael
e649a16620
feat: improve search UX and backend inclusivity on AddPodcast page
2026-04-16 21:06:54 +02:00
Michael
e759cf9471
feat: add trending podcasts discovery page with genre filtering and subscription support
2026-04-16 16:24:43 +02:00
Michael
dfd2cce761
feat: implement AudioPlayer component with playback controls, progress tracking, and persistence
2026-04-16 16:22:46 +02:00
Michael
5305f3e5f6
feat: add Trending page to display and subscribe to popular podcasts by genre
2026-04-16 16:18:47 +02:00
Michael
f68989c228
feat: implement AudioPlayer component with playback controls, progress tracking, and persistence
2026-04-16 16:11:39 +02:00
Michael
ad78a34cb4
feat: implement AudioPlayer component with playback controls, progress tracking, and persistence
2026-04-16 16:05:23 +02:00
Michael
d8cb830570
feat: implement Library page with subscription management and synchronization features
2026-04-16 16:04:39 +02:00
Michael
a670a4fe5d
feat: add trending podcasts discovery page with genre filtering and subscription support
2026-04-16 15:46:35 +02:00
Michael
ea4fdb38d5
feat: implement AddPodcast page with RSS subscription and discovery search functionality
2026-04-16 15:45:20 +02:00
Michael
acd9a1a2c5
feat: initialize global styles with theme variables, Tailwind configuration, and custom UI components
2026-04-16 15:39:32 +02:00
Michael
030ddfba81
feat: implement AudioPlayer component with playback controls, progress tracking, and persistent settings
2026-04-16 15:34:34 +02:00
Michael
17f2496dda
feat: implement global audio player with playback controls, progress tracking, and persistent settings
2026-04-16 15:34:09 +02:00
Michael
c9127c70c1
feat: implement trending podcasts discovery page with genre filtering and subscription capabilities
2026-04-16 15:27:00 +02:00
Michael
67d45b72ee
feat: initialize global styles with theme-aware CSS variables and utility components
2026-04-16 15:20:29 +02:00
Michael
3bb2dfc009
feat: implement authentication routing, episode details slide-over, and success notification modal
2026-04-16 15:15:28 +02:00
Michael
90ee8df9df
feat: implement authenticated user dashboard with episode listing and pagination
2026-04-16 15:04:57 +02:00
Michael
e01b661aa2
feat: implement podcastIndexService using iTunes API for search and trending podcasts
2026-04-16 15:03:10 +02:00
Michael
a993e2d658
feat: implement podcast discovery and management controllers and services
2026-04-16 14:57:49 +02:00
Michael
aa54304bf3
feat: implement backend episode management and progress tracking controllers and routes
2026-04-16 14:48:32 +02:00
Michael and Claude Haiku 4.5
686c4d9007
feat: use episode-specific images instead of podcast images
...
EpisodeCard and AudioPlayer now display episode.imageUrl when available,
falling back to the podcast image only if the episode has none.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-04-16 14:29:45 +02:00
Michael and Claude Sonnet 4.6
b73f06c2b2
Refonte thème + fixes lecteur + suppression faux stats
...
AudioPlayer:
- Supprime section vitesse de lecture
- -30s/+30s (compact et expanded), avec icônes RotateCcw/RotateCw
- Rewind compact passé de -15s à -30s
Thème:
- globals.css refait : animations slide-up/fade-in/reveal définies, glass card améliorée
- Background plus profond (#080d1a), glow/blur plus soignés
- Boutons neon-button avec hover translateY
Corrections:
- Supprime Settings2 (bouton sans action) dans Library
- Supprime stat "2.4k mins listened" inventée dans Navigation
- Stats Library passent de 3 à 2 colonnes (réelles uniquement)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 14:26:19 +02:00
Michael and Claude Sonnet 4.6
d3b356ce26
Corrige ReferenceError: handleConfirmUnsubscribe is not defined
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 14:20:42 +02:00
Michael and Claude Sonnet 4.6
177917c06e
Résout tous les conflits de merge
...
- podcastController: createPodcastFromRss sans feedData (parse le RSS réel)
- Discover.tsx: stub vide (remplacé par /trending et /add)
- App.tsx + Navigation.tsx: conflits déjà résolus
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 14:19:55 +02:00
Michael
6e9da01488
feat: initialize frontend entry point with HTML boilerplate and custom fonts
2026-04-16 14:09:14 +02:00
Michael
f441251bb1
feat: implement library page with subscription management and optimistic updates
2026-04-16 13:58:24 +02:00
Michael
e075434dd7
feat: implement RSS parsing service and podcast controller for feed ingestion and episode synchronization
2026-04-16 13:55:18 +02:00
Michael
ba376930b0
feat: implement RSS feed parsing service and add library page UI for podcast management
2026-04-16 13:50:10 +02:00
Michael
277d966e50
feat: implement AddPodcast and Trending pages for podcast discovery and subscription management
2026-04-16 13:46:29 +02:00
Michael
aaf7b82985
feat: implement trending podcasts page and RSS parsing service for feed data extraction
2026-04-16 13:44:05 +02:00
Michael
2fbbf70ee0
feat: add Library page to display and manage user podcast subscriptions
2026-04-16 13:34:27 +02:00
Michael
d81b3a6516
feat: implement podcast subscription management, library page, and associated service methods
2026-04-16 13:28:23 +02:00
Michael
8156b7b228
feat: implement AudioPlayer component with playback controls, speed adjustment, and progress tracking
2026-04-16 13:23:45 +02:00
Michael
b2d0af639f
feat: implement audio player component with progress tracking and add library page for managing subscriptions
2026-04-16 13:13:12 +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
38521c45dc
feat: add AddPodcast and Trending pages for podcast discovery and subscription management
2026-04-16 13:01:53 +02:00
Michael
f50d1072a9
feat: add Library page to manage and unsubscribe from podcast subscriptions
2026-04-16 13:00:10 +02:00
Michael
2b971f97b3
feat: implement main navigation component and integrate protected routing in App structure
2026-04-16 12:57:37 +02:00
Michael
2c2d7501e6
feat: add Discover page component and define image tag in docker-compose
2026-04-16 12:39:33 +02:00
Michael
2d5e90a441
feat: add Trending and AddPodcast pages for podcast discovery and subscription management
2026-04-16 12:35:52 +02:00
Michael
f48789dfde
feat: implement application routing with protected routes and sidebar navigation component
2026-04-16 12:27:58 +02:00
Michael and Claude 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
Michael and Claude Sonnet 4.6
84c5cd6363
Migre eslint v8 → v9 (flat config), supprime les dépréciations
...
- eslint 8 → 9, @typescript-eslint/* → typescript-eslint (package unifié)
- Remplace .eslintrc.json par eslint.config.mjs (backend) et eslint.config.js (frontend)
- Ajoute eslint-plugin-react, eslint-plugin-react-hooks, globals (frontend)
- Supprime rimraf@3, @humanwhocodes/* qui étaient des deps transitives d'eslint v8
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 11:27:46 +02:00
Michael and Claude 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
Michael and Claude Sonnet 4.6
9a3171f640
Ajoute un champ RSS URL dans la page Découvrir
...
Permet d'abonner un podcast directement par son URL de flux RSS, sans passer par la recherche PodcastIndex.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 11:19:40 +02:00
Michael and Claude 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 and Claude Haiku 4.5
1822ab1afe
fix: single container without nginx — Express serves frontend
...
- Remove separate backend/ and frontend/ Dockerfiles
- Add root Dockerfile (3-stage: frontend build → backend build → runtime)
- Frontend static files served by Express from /public
- Simplify docker-compose to 3 services: mongodb, redis, app (port 3579)
- Fix vite proxy not to strip /api prefix from paths
- Default API URL to relative /api instead of hardcoded localhost
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-04-16 10:43:06 +02:00
Michael
a8787857b5
fix: add proper Dockerfiles for backend and frontend, simplify docker-compose
2026-04-16 10:28:40 +02:00
Michael
9bb61cc8a7
feat: implement podcast discovery with PodcastIndex API integration and Discover page
2026-04-16 10:01:05 +02:00
Michael
d7f158a498
docs: add comprehensive getting started guide and linting configuration
2026-04-16 09:56:48 +02:00