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
7923f4cf09
feat: initialize backend project with dependencies and build scripts
2026-04-16 14:50:12 +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
ad1c65b1f5
feat: implement rssParserService to handle feed parsing, episode extraction, and podcast synchronization
2026-04-16 14:16:45 +02:00
Michael
1e3caea1ab
feat: implement rssParserService to handle feed parsing, episode extraction, and database synchronization
2026-04-16 14:16:35 +02:00
Michael
0d9bffbc46
feat: implement rssParserService to handle feed parsing, episode extraction, and database synchronization
2026-04-16 14:15:18 +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
1028774a65
feat: implement podcast controller with subscription, search, and sync functionality
2026-04-16 13:56:48 +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
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
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
b06298d80e
chore: upgrade MongoDB to v8 and implement health checks for database services with conditional startup dependencies
2026-04-16 12:51:14 +02:00
Michael
34db9e2542
feat: implement podcast controller for subscription management, discovery, and search functionality
2026-04-16 12:46:22 +02:00
Michael
7e3b43fb5c
chore: update mongodb version, rename network, and parameterize app port in docker-compose
2026-04-16 12:42:49 +02:00
Michael
57da7ad50b
refactor: rename app service to podcastic and remove explicit image tag in docker-compose.yml
2026-04-16 12:42:15 +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
f356b82258
Please provide the changes or the files you would like me to summarize.
2026-04-16 12:37:22 +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
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
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
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
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
00d92fc668
fix: switch backend to CommonJS to fix ESM module resolution
...
Remove 'type: module' and use CommonJS output so Node.js resolves
imports without requiring explicit .js extensions.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-04-16 11:01:48 +02:00
Michael and Claude Haiku 4.5
ffb85ade90
fix: add @types/cors and fix jwt expiresIn type
...
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-04-16 10:58:11 +02:00
Michael and Claude Haiku 4.5
faec1f37b4
fix: use npm install instead of npm ci (no lockfile in repo)
...
Also unignore package-lock.json for future deterministic installs.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-04-16 10:55:28 +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
547de27eed
simplify: use official Docker images with clean docker-compose.yml - no complex Dockerfile needed
2026-04-16 10:22:04 +02:00
Michael
65d43c3afb
fix: simplify docker-compose.unraid.yml for better Unraid compatibility
2026-04-16 10:15:15 +02:00
Michael
73585213ba
feat: add Unraid single-container deployment with docker-compose and comprehensive setup guide
2026-04-16 10:13:08 +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
Michael
068f4e7ef7
feat: implement React components - dashboard, auth pages, audio player UI
2026-04-16 09:56:17 +02:00
Michael
8c00a1b0f5
feat: implement authentication and core API endpoints - auth, podcasts, episodes
2026-04-16 09:55:15 +02:00
Michael
8df1161023
feat: initialize Podcastic project foundation - setup backend and frontend
2026-04-16 09:53:36 +02:00