Components Overview
The Nadie Sabe Nada Podcast application is built with a modular React component architecture. All components leverage modern React patterns including hooks, Redux for state management, and Framer Motion for animations.Architecture
The application follows these architectural principles:- Component-based structure: Each component is self-contained with its own JSX and CSS modules
- Redux state management: Global state managed through Redux slices (podcast, player, filter, audioTime)
- Custom hooks: Reusable logic extracted into custom hooks (
useMobileDetect,useDownload,useWindowWidth) - Animations: Consistent animations using Framer Motion throughout the app
- Material-UI integration: Icons and components from MUI for enhanced UI
Core Components
PodcastList
Displays a paginated, filterable grid of podcast episodes with search and filter capabilities
PodcastDetail
Shows detailed information for a single podcast episode with YouTube video integration
LastPodcast
Dedicated view for the most recent episode with full interaction features
PersistentPlayer
Fixed audio player that persists across page navigation with playback time tracking
MP3Player
Individual podcast card with play controls, favorites, and download functionality
Header
Navigation header with branding, links, and settings access
Settings
User preferences and data management interface
Component Dependencies
State Management
All major components connect to Redux store slices:- podcast: Manages episodes, favorites, listen later, completed episodes
- player: Controls current playback state and current podcast
- filter: Handles search, filtering, and pagination state
- audioTime: Tracks playback times for each episode
Shared Libraries
- framer-motion: Animation library for smooth transitions
- react-router-dom: Navigation and routing
- react-redux: Redux integration
- @mui/icons-material: Material Design icons
- react-hot-toast: Toast notifications
- react-helmet-async: Dynamic document head management
Styling
All components use CSS Modules for scoped styling:Common Patterns
Tooltips
Most interactive components use custom Bootstrap-styled tooltips:Animations
Components use consistent Framer Motion variants:Redux Dispatch
Components use Redux hooks for state access and updates:Next Steps
Explore individual component documentation for detailed prop types, usage examples, and implementation details:- PodcastList - Main episode listing
- PodcastDetail - Episode detail view
- LastPodcast - Latest episode feature
- PersistentPlayer - Audio player
- MP3Player - Episode cards
- Header - Navigation header
- Settings - Settings interface
