# 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. ## 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 Build and run the container using Docker Compose: ```bash docker-compose up -d --build ``` The application will be available at `http://localhost:3000`. ## 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.