Next-Generation Desktop IPTV & Media Streaming Client
A lightweight, performance-focused desktop media application for managing and playing M3U and Xtream Codes IPTV playlists. Powered by Electron, React, TypeScript, and HLS.js.
Strmly is a modern, cross-platform desktop IPTV player designed for seamless streaming performance and elegant media organization. It provides full support for user-supplied M3U playlists and Xtream Codes servers, featuring rich TMDB metadata integration, local profile isolation, and a custom HLS media engine.
- Playlist Integration — Native parsing for M3U URLs, local
.m3u/.m3u8files, and Xtream Codes API credentials. - Categorized Media Engine — Dedicated interfaces for Live TV channels, Video-on-Demand (Movies), and TV Series with episode indexing.
- TMDB Metadata Pipeline — Automatic enrichment for posters, backdrops, episode guides, cast information, and plot summaries.
- Custom HLS Player — Advanced playback controls supporting multi-audio tracks, subtitle selection, playback speed adjustment, Picture-in-Picture (PiP), and external player delegation.
- Multi-Profile Management — Isolated local configuration profiles with independent watch histories, progress tracking, and favorites.
- Cross-Platform Desktop Bundles — Optimized builds for Windows (NSIS Installer) and Linux (AppImage).
| Layer | Technology |
|---|---|
| Shell & Core | Electron (v42), Node.js (v24), ffmpeg-static |
| Frontend Framework | React (v19), TypeScript (v6), Vite (v8) |
| Styling & Icons | Tailwind CSS (v4), Lucide React |
| Media Playback | HLS.js, Custom HTML5 Video Interface |
| Metadata Engine | The Movie Database (TMDB v3 API) |
| Build & Packaging | Electron Builder, Vite, PostCSS |
strmly-player/
├── electron/ # Main process, IPC handlers, and window management
├── src/ # React application source code
│ ├── components/ # UI components (Player, Catalog, Profile Manager, Navigation)
│ ├── hooks/ # Custom hooks for HLS playback, data fetching, and state
│ ├── lib/ # Playlist parsers, TMDB client, and storage utilities
│ ├── services/ # Xtream API and M3U sync services
│ └── styles/ # Global styles and Tailwind CSS imports
├── scripts/ # Automated test suites (Security, Catalog, Migration, A11y)
└── build/ # Packaging assets and icons
- Node.js (v20 or higher)
- npm (v10 or higher)
git clone https://github.com/ardakrt/strmly-player.git
cd strmly-player
npm installCreate a .env file in the root directory to enable TMDB metadata enrichment:
cp .env.example .envDefine your TMDB API key:
VITE_TMDB_API_KEY=your_tmdb_v3_api_keyNote: You can also configure or update your TMDB API key directly within the application settings.
Launch Vite dev server:
npm run devLaunch Electron desktop application connected to dev server:
npm run electron:devCompile the web application assets:
npm run buildPackage executable desktop binaries:
# Windows (NSIS Installer)
npm run dist
# Linux (AppImage)
npm run dist:linuxRun the full verification suite (linting, type checking, security audits, and regression tests):
npm run verifyImportant
Strmly does not host, provide, sell, or redistribute any TV channels, streams, movies, or IPTV subscriptions. Users are solely responsible for supplying their own legal content streams and adhering to the licensing agreements of their respective providers.
Distributed under the MIT License. See LICENSE for details.
Maintained by @ardakrt