Skip to content

chikosan/openiptv

Repository files navigation

OpenIPTV - Modern IPTV Streaming Platform

A beautiful, open-source web application for streaming and managing IPTV channels from M3U8 playlists.

OpenIPTV React TypeScript TailwindCSS Vibe Coded

Note: This project was created mostly through vibe coding with AI assistance. It demonstrates what's possible when combining human creativity with AI-powered development.

πŸ“Έ Screenshots

OpenIPTV Welcome Screen Welcome screen - Add your M3U8 playlist to get started

OpenIPTV Player Channel list with video player

✨ Features

Core Features

  • πŸ“Ί M3U/M3U8 Playlist Support - Import and manage multiple IPTV playlists

  • 🎬 Multi-Protocol Streaming - HLS, RTMP, RTSP, HTTP streams with hls.js

  • ⭐ Channel Management - Organize, favorite, search, and hide channels

  • πŸ“± Fully Responsive - Perfect experience on mobile, tablet, and desktop

  • 🎨 Modern UI - Beautiful dark mode interface with smooth animations

  • πŸ’Ύ Local Storage - All data stored locally in IndexedDB

  • πŸ• Continue Watching - Resume from your watch history

  • ⌨️ Keyboard Shortcuts - Full keyboard navigation (press ? for help)

  • πŸ“Ί Channel Info Overlay - Auto-displaying channel info on switch

  • πŸ”Š Volume Memory - Remembers your volume preferences

  • ⏭️ Auto-Play Next - Binge-watching mode with countdown

  • 🎯 Smart Loading - Skeleton animations for smooth transitions

  • πŸ”” Toast Notifications - Beautiful feedback for all actions

Advanced Features

  • πŸ“‘ Chromecast Support - Cast streams to your TV
  • πŸ“‹ EPG Support - Electronic Program Guide with search
  • βͺ Catchup/Timeshift - Watch past programs (provider-dependent)
  • πŸŽ₯ Recording - Record streams directly in browser
  • πŸ–ΌοΈ Picture-in-Picture - Watch while multitasking
  • πŸ“ Custom Folders - Organize channels into custom categories
  • πŸ”„ Auto-Refresh - Keep playlists up to date automatically
  • 🌍 Country Grouping - Channels organized by country
  • πŸ” Smart Search - Quickly find channels by name or category
  • 🎯 Grid/List Views - Choose your preferred channel display mode
  • 🎬 VOD Detection - Automatic movie/series detection from playlists

Personalization

  • πŸ”’ Channel Numbers - Display channel numbers for easy navigation
  • 🎨 Themes & Accent Colors - Customize appearance with multiple accent colors
  • πŸ”’ Parental Controls - PIN-protected channel and group blocking
  • πŸ“Š Watch Statistics - Track your viewing habits and top channels
  • πŸ’Ύ Backup/Restore - Export and import all your settings
  • πŸ“Ί Last Channel Resume - Auto-resume last watched channel on startup
  • 😴 Sleep Timer - Auto-stop playback after set duration
  • 🎚️ Buffer Settings - Customize buffer length for smooth playback
  • πŸ“ Subtitle/Audio Preferences - Set preferred languages
  • πŸ“ˆ Stream Info Overlay - View codec, bitrate, and resolution

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ or npm/yarn/pnpm

Installation

  1. Clone the repository

    git clone https://github.com/chikosan/openiptv.git
    cd openiptv
  2. Install dependencies

    npm install
    # or
    yarn install
    # or
    pnpm install
  3. Run the development server

    npm run dev
    # or
    yarn dev
    # or
    pnpm dev
  4. Open your browser Navigate to http://localhost:3000

🐳 One-Click Docker Install

git clone https://github.com/chikosan/openiptv.git && cd openiptv && docker-compose up -d

Or run directly without cloning:

docker run -d -p 3000:3000 --name openiptv ghcr.io/chikosan/openiptv:latest

Access the app at http://localhost:3000

πŸ“– Usage

Adding a Playlist

  1. On first launch, you'll see the welcome screen
  2. Enter your M3U8 playlist URL (e.g., http://example.com/playlist.m3u8)
  3. Click "Add Playlist" and wait for channels to load
  4. Start watching!

Managing Channels

  • Search: Use the search bar to find channels quickly
  • Favorites: Click the star icon to add channels to favorites
  • View Modes: Switch between grid and list views
  • Filters: Filter by all channels or favorites only

Playback Controls

  • Play/Pause: Click the video or use spacebar
  • Volume: Use volume slider or up/down arrow keys
  • Fullscreen: Click fullscreen button or press 'F'
  • Quality: Video.js automatically adapts quality based on your connection

πŸ› οΈ Tech Stack

Frontend

  • Framework: Next.js 14 (App Router)
  • UI Library: React 18
  • Language: TypeScript
  • Styling: TailwindCSS + shadcn/ui
  • State Management: Zustand
  • Video Player: hls.js (streaming) + Video.js (UI controls)
  • Data Fetching: TanStack Query (React Query)
  • Icons: Lucide React
  • Animations: Framer Motion

Storage

  • Primary: IndexedDB (via native API)
  • Fallback: localStorage

πŸ“ Project Structure

openiptv/
β”œβ”€β”€ app/                    # Next.js app directory
β”‚   β”œβ”€β”€ api/               # API routes (proxy)
β”‚   β”œβ”€β”€ layout.tsx         # Root layout
β”‚   β”œβ”€β”€ page.tsx           # Home page
β”‚   └── globals.css        # Global styles
β”œβ”€β”€ components/            # React components
β”‚   β”œβ”€β”€ channels/          # Channel list components
β”‚   β”œβ”€β”€ layout/            # Layout components
β”‚   β”œβ”€β”€ player/            # Video player components
β”‚   β”œβ”€β”€ settings/          # Settings modal
β”‚   └── welcome-screen.tsx # Welcome screen
β”œβ”€β”€ lib/                   # Utilities and logic
β”‚   β”œβ”€β”€ store/             # Zustand stores
β”‚   β”œβ”€β”€ recording/         # Recording functionality
β”‚   β”œβ”€β”€ epg/               # EPG management
β”‚   β”œβ”€β”€ m3u8-parser.ts     # M3U8 playlist parser
β”‚   β”œβ”€β”€ storage.ts         # IndexedDB wrapper
β”‚   └── types.ts           # TypeScript types
β”œβ”€β”€ public/                # Static assets & PWA
└── package.json           # Dependencies

πŸ”§ Configuration

Environment Variables

Currently, no environment variables are required. All data is stored locally.

Customization

Changing Theme Colors

Edit app/globals.css to customize the color scheme:

:root {
  --primary: 217.2 91.2% 59.8%; /* Blue */
  --secondary: 262.1 83.3% 57.8%; /* Violet */
  --accent: 38.4 96.1% 50%; /* Amber */
}

πŸ“± PWA Support

OpenIPTV supports Progressive Web App features:

  • Install on home screen
  • App-like experience
  • SVG icons for crisp display
  • Offline channel list access
  • Push notifications

🎯 Roadmap

Phase 1 - MVP βœ… Complete

  • M3U8 playlist import
  • Channel list with search
  • Video player with HLS support
  • Favorites management
  • Responsive design
  • Dark mode UI
  • Grid/List view modes
  • Country-based channel grouping

Phase 2 - Enhancement βœ… Complete

  • PWA support with SVG icons
  • Improved error handling
  • Autoplay fallback handling
  • HLS.js optimizations for slow streams
  • Chromecast integration
  • EPG (Electronic Program Guide)
  • Multiple playlist management
  • Custom folders/categories
  • Channel drag & drop organization
  • Auto-refresh playlists
  • Picture-in-Picture support
  • Quality selector

Phase 3 - Advanced (Current)

  • Recording/DVR functionality (basic)
  • Admin panel for channel management
  • Scheduled recordings
  • User accounts (optional)
  • Playlist sharing/export
  • Parental controls
  • Multi-language support

πŸ› Known Issues

  • Some M3U8 streams may not work due to CORS restrictions
  • Mobile browsers may have autoplay limitations
  • Picture-in-Picture support varies by browser

πŸ“š Documentation

All documentation is located in the docs/ folder:

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

⚠️ Disclaimer

This application is a player for IPTV playlists. Users are responsible for the legality of the content they access through their own playlist URLs. The developers of this application do not host, distribute, or provide any IPTV content.

πŸ™ Acknowledgments

πŸ“§ Contact

For questions or support, please open an issue on GitHub.


Made with ❀️ for IPTV enthusiasts


OpenIPTV is open-source software.

About

Modern IPTV Streaming Platform - Web-based M3U8 player with EPG, Chromecast, recordings, and more

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages