# NodeCast TV A modern, web-based IPTV player featuring Live TV, EPG, Movies (VOD), and Series support. Built with performance and user experience in mind. ## Features - **๐Ÿ“บ Live TV**: Fast channel zapping, category grouping, and search. - **๐Ÿ“… TV Guide (EPG)**: Interactive grid guide with 24h timeline, search, and dynamic resizing. - **๐ŸŽฌ VOD Support**: Dedicated sections for Movies and TV Series with rich metadata, posters, and seasonal episode lists. - **โค๏ธ Favorites System**: Unified favorites for channels, movies, and series with instant synchronization. - **โšก High Performance**: Optimized for large playlists (7000+ channels) using virtual scrolling and batch rendering. - **โš™๏ธ Management**: - Support for Xtream Codes and M3U playlists. - Manage hidden content categories. - Playback preferences (volume memory, auto-play). - **๐Ÿณ Docker Ready**: Easy deployment containerization. ## Screenshots
Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4
## Getting Started ### Prerequisites - Node.js (v14 or higher) - npm ### Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/nodecast-tv.git cd nodecast-tv ``` 2. Install dependencies: ```bash npm install ``` 3. Start the development server: ```bash npm run dev ``` 4. Open your browser at `http://localhost:3000`. ### Docker Deployment You can run NodeCast TV easily using Docker. 1. Create a `docker-compose.yml` file (or copy the one from this repo): ```yaml services: nodecast-tv: build: https://github.com/technomancer702/nodecast-tv.git#main container_name: nodecast-tv ports: - "3000:3000" # Host:Container volumes: - ./data:/app/data restart: unless-stopped environment: - NODE_ENV=production - PORT=3000 # Optional: Internal container port ``` 2. Run the container: ```bash docker-compose up -d ``` The application will be available at `http://localhost:3000`. ## Browser Codec Support NodeCast TV is a web-based application, which means **video decoding is handled by your browser**, not by the server. The server simply proxies the stream data - it does not transcode or re-encode video. This means codec support depends entirely on what your browser can decode natively: | Codec | Chrome | Firefox | Safari | Edge | |-------|--------|---------|--------|------| | **H.264 (AVC)** | โœ… | โœ… | โœ… | โœ… | | **H.265 (HEVC)** | โŒยน | โŒ | โœ… | โš ๏ธยฒ | | **VP9** | โœ… | โœ… | โš ๏ธยณ | โœ… | | **AV1** | โœ… | โœ… | โŒ | โœ… | | **AAC Audio** | โœ… | โœ… | โœ… | โœ… | | **AC3/EAC3 (Dolby)** | โŒ | โŒ | โœ… | โŒ | | **MP3 Audio** | โœ… | โœ… | โœ… | โœ… | **Notes:** 1. Chrome may support HEVC on macOS with hardware decoder 2. Edge requires the paid "HEVC Video Extensions" from Microsoft Store ($0.99) 3. Safari VP9 support varies by device/version **If a stream doesn't play:** - The stream codec may not be supported by your browser - Try a different browser (Safari for HEVC/Dolby, Chrome/Edge for VP9/AV1) - Check if your IPTV provider offers alternative stream formats ## Technology Stack - **Backend**: Node.js, Express - **Frontend**: Vanilla JavaScript (ES6+), CSS3 - **Database**: JSON-based local storage (LowDB style) - **Streaming**: HLS.js for stream playback ## Project Structure ``` nodecast-tv/ โ”œโ”€โ”€ public/ # Frontend assets โ”‚ โ”œโ”€โ”€ css/ # Stylesheets โ”‚ โ”œโ”€โ”€ js/ # Client-side logic โ”‚ โ”‚ โ”œโ”€โ”€ components/ # UI Components (ChannelList, EpgGuide, etc.) โ”‚ โ”‚ โ”œโ”€โ”€ pages/ # Page Controllers (Movies, Series, etc.) โ”‚ โ”‚ โ””โ”€โ”€ api.js # API Client โ”‚ โ””โ”€โ”€ index.html # Main entry point โ”œโ”€โ”€ server/ # Backend server โ”‚ โ”œโ”€โ”€ routes/ # API Endpoints โ”‚ โ”œโ”€โ”€ services/ # Playlist parsers & logic โ”‚ โ””โ”€โ”€ db.js # Data persistence layer โ””โ”€โ”€ data/ # Persistent storage (playlists, settings) ``` ## Usage 1. Go to **Settings** -> **Content Sources**. 2. Add your IPTV provider details (Xtream Codes or M3U URL). 3. Click "Refresh Sources". 4. Navigate to **Live TV**, **Movies**, or **Series** to browse your content. ## License This project is licensed under the **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)** license. You are free to: - **Share** โ€” copy and redistribute the material in any medium or format - **Adapt** โ€” remix, transform, and build upon the material Under the following terms: - **Attribution** โ€” You must give appropriate credit. - **NonCommercial** โ€” You may not use the material for commercial purposes. - **ShareAlike** โ€” If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. See the [LICENSE](LICENSE) file for details.