Skip to content

Repository files navigation

Strmly

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.

Electron React Vite TypeScript Tailwind CSS License



Overview

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.


Key Features

  • Playlist Integration — Native parsing for M3U URLs, local .m3u/.m3u8 files, 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).

Technology Stack

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

Project Structure

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

Getting Started

Prerequisites

  • Node.js (v20 or higher)
  • npm (v10 or higher)

1. Repository Setup

git clone https://github.com/ardakrt/strmly-player.git
cd strmly-player
npm install

2. Environment Configuration

Create a .env file in the root directory to enable TMDB metadata enrichment:

cp .env.example .env

Define your TMDB API key:

VITE_TMDB_API_KEY=your_tmdb_v3_api_key

Note: You can also configure or update your TMDB API key directly within the application settings.

3. Development Mode

Launch Vite dev server:

npm run dev

Launch Electron desktop application connected to dev server:

npm run electron:dev

Build & Distribution

Compile the web application assets:

npm run build

Package executable desktop binaries:

# Windows (NSIS Installer)
npm run dist

# Linux (AppImage)
npm run dist:linux

Quality Assurance & Verification

Run the full verification suite (linting, type checking, security audits, and regression tests):

npm run verify

Legal Notice

Important

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.


License

Distributed under the MIT License. See LICENSE for details.


Maintained by @ardakrt

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages