A modern IPTV streaming application that allows you to stream your favorite channels, movies, and shows in one place. Built with Next.js, React, and TypeScript for a smooth streaming experience.
- Multi-format Support: Supports HLS (.m3u8) and MPEG-TS streams
- Quality Selection: Automatic quality detection and manual quality switching (HEVC, Full HD, HD, Low)
- Full-Screen Player: Immersive viewing experience with custom controls
- Continue Watching: Resume playback from where you left off
- VOD Progress Tracking: Automatically saves and restores your playback position for pre-recorded content
- Visual Progress Indicators: Red progress bars on channel cards for partially watched content
- M3U Playlist Support: Load channels from standard M3U playlist files
- Channel Categories: Browse channels organized by groups
- Favorites System: Save and organize your favorite channels
- Channel Search: Quickly find channels by name
- Per-Playlist Settings: Independent favorites, history, and progress for each IPTV provider
- EPG Integration: Electronic Program Guide support for viewing schedules
- Program Information: See what's currently playing and upcoming shows
- Modern Design: Clean, dark-themed interface optimized for streaming
- Responsive Hero Section: Dynamic scaling for long channel names and mobile-friendly layout
- Responsive Layout: Works seamlessly on desktop and mobile devices
- Smooth Animations: Framer Motion powered transitions and interactions
- Accessibility: Built with accessibility best practices
- Proxy API: Built-in proxy for handling CORS and stream routing
- Custom Error Handling: Branded "Stream Unavailable" screens for provider-related playback issues
- State Management: Zustand with persistent storage and URL-hashed playlist settings
- Type Safety: Full TypeScript implementation for reliability
- Performance: Optimized with Next.js App Router, lazy loading, and throttled progress saving
- Bun (v1.0+)
- A valid M3U playlist URL (from your IPTV provider)
- Optional: EPG (XMLTV) URL for program guide
- Clone the repository:
git clone <repository-url>
cd dulcecast- Install dependencies:
bun install- Start the development server:
bun dev- Open http://localhost:3000 in your browser.
On first launch, you'll need to configure your streaming sources:
- Playlist URL: Enter your M3U playlist URL
- EPG URL (optional): Enter your EPG data URL for program information
- Save & Start Watching: Your channels will be loaded and organized
- For You: Personalized recommendations and continue watching
- All Channels: Complete channel list organized by categories
- Favorites: Your saved favorite channels
- Click any channel to start streaming
- VOD Resume: Automatically picks up where you left off on movies and episodes
- Progress Bars: Easily identify partially watched content with visual red bars
- Use quality selector for different stream qualities
- Full-screen mode available for immersive viewing
- Channel switching with keyboard navigation
- Click the heart icon on any channel to add to favorites
- Access favorites from the dedicated tab
- Remove channels from favorites anytime
dulcecast/
βββ app/ # Next.js app directory
β βββ api/proxy/ # Stream proxy API
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
βββ assets/ # Static image assets (logo, etc.)
βββ components/ # React components
β βββ browse/ # Channel browsing components
β βββ login/ # Authentication components
β βββ player/ # Video player & error components
β βββ ui/ # Reusable UI components
β βββ views/ # Main view components
βββ contexts/ # React contexts for state management
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions and parsers
βββ public/ # Publicly served static files
βββ store/ # Zustand state stores
βββ types/ # TypeScript type definitions
βββ README.md # Project documentation
- Frontend: Next.js 16, React 19, TypeScript
- Styling: Tailwind CSS (v4), Radix UI components
- State Management: Zustand (Persist), React Context
- Video Playback: HLS.js, mpegts.js
- Animations: Framer Motion
- Icons: Lucide React
- Package Manager: Bun
- HTTP Client: Axios
bun dev- Start development serverbun build- Build for productionbun start- Start production serverbun lint- Run ESLint
- LoginView: Handles playlist and EPG URL input
- BrowseView: Main channel browsing interface
- FullScreenVideoPlayer: Video playback with controls
- ChannelCarousel/Grid: Channel display components
/api/proxy- Stream proxy for CORS handling
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This application acts as a client for IPTV streams. Ensure you have proper authorization to access the streams you configure. DulceCast does not provide or host any streaming content.
This project is private and proprietary.
For support or questions, please check the documentation or create an issue in the repository.
Best viewed with DulceCast - Your ultimate streaming companion.
