A modern, feature-rich podcast discovery and listening platform built with Next.js and React.

- 🔍 Advanced Podcast Search: Search through a vast library of podcasts using the Podcast Index API
- 📈 Trending Podcasts: Discover what's popular in the podcast world
- 🎵 Web Audio Player: Built-in audio player with waveform visualization
- 🎤 Voice Controls: Hands-free podcast control with voice commands
- 📱 Responsive Design: Seamless experience across all devices
- 🔄 Real-time Updates: Powered by React Query for efficient data fetching
- 💾 Persistent Storage: Podcast data stored in Supabase
- Frontend Framework: Next.js 14 with App Router
- Language: TypeScript
- State Management:
- React Query (TanStack Query) for server state
- React Context for audio player state
- Database: Supabase
- API Integration: Podcast Index API
- Styling: Tailwind CSS
- Audio Processing: Web Audio API with waveform visualization
- Node.js (v18 or higher)
- pnpm package manager
- Supabase account
- Podcast Index API credentials
Create a .env.local
file in the root directory with the following variables:
SUPABASE_URL=your_supabase_url
SUPABASE_API_KEY=your_supabase_api_key
PODCAST_INDEX_API_KEY=your_podcast_index_api_key
PODCAST_INDEX_API_SECRET=your_podcast_index_api_secret
- Clone the repository:
git clone https://github.com/yourusername/podcastic.git
cd podcastic
- Install dependencies:
pnpm install
- Run the development server:
pnpm dev
- Open http://localhost:3000 in your browser.
src/
├── app/ # Next.js app router pages
│ ├── (main)/ # Main layout routes
│ └── api/ # API routes
├── components/ # React components
│ ├── player/ # Audio player components
│ └── ... # Other components
└── lib/ # Utility functions and configurations
- Real-time search functionality
- Results from the Podcast Index API
- Caching with React Query
- Custom built audio player with waveform visualization
- Support for playback controls
- Persistent audio state across navigation
- Voice control integration for hands-free operation
- Natural voice command recognition using Web Speech API
- Supported commands:
- Playback: "play", "pause", "stop"
- Navigation: "forward", "skip forward", "rewind", "go back"
- Speed Control: "speed up", "faster", "slow down", "slower", "normal speed"
- Volume: "mute", "unmute"
- Real-time command processing
- Continuous listening mode with automatic reconnection
- Visual feedback for voice recognition status
- Discover popular podcasts
- Regular updates via Supabase
- Efficient data caching
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Podcast Index API for providing podcast data
- Supabase for database services
- All the amazing open-source libraries that made this project possible