Skip to main content

STALLYONS TECHNOLOGIES

Innovating the future of digital with AI, design, and technology. From AI to Web — Stallyons transforms your ideas into digital reality. Building smarter digital experiences through AI, innovation, and technology. Innovating the future of digital with AI, design, and technology. From AI to Web — Stallyons transforms your ideas into digital reality. Building smarter digital experiences through AI, innovation, and technology.
EN
background

Blog

A White-Label IPTV
Player App on Laravel and Ministra

White-Label IPTV Player App on Laravel and Ministra

A subscriber turns on the TV in the living room, opens the same service on a phone at lunch, and later finishes a film on a set-top box in the bedroom. Three very different screens, one login, one library, and one expectation: it should all just be their service, with their channels and their branding, playing only what they have paid for. Meeting that expectation across a dozen device platforms, without building a separate app for each one, is the whole problem this project solved.

The result is a white-label IPTV player built on PHP Laravel and delivered from a single backend as web-view applications across TV and mobile platforms, integrated with the Ministra Panel middleware and XONE streaming servers so it behaves like a native Ministra client while carrying the operator’s own logo and portal login.

Put simply, one Laravel backend feeds live TV, an on-demand video club, and radio to Android, Android TV, iOS, LG webOS, Samsung Tizen, Apple TV, Roku, and Android set-top boxes, over secure links and gated by each viewer’s subscription.

The Starting Point: One Branded Player for Every Kind of Screen

An IPTV operator does not want eight apps. They want one product that reaches every screen their subscribers own and still looks and behaves like theirs. That single ambition pulled several hard requirements along with it. The player had to run consistently on TVs, phones, streaming sticks, and set-top boxes without a separate native build per platform. It had to speak fluently to the Ministra Panel and XONE, the middleware and streaming layer the operator already ran, so channels, subscriptions, and messages all flowed from the existing system rather than a parallel one.

Two more requirements were non-negotiable for a paid service. Streams could not be left as open URLs that anyone could copy out of the app and share, so playback had to run over secure, temporary links. And content had to match entitlements exactly, showing each viewer only the channels and library their subscription covered, with the expiry date visible and a warning as it approached. On top of that sat the experience itself: live TV with a programme guide and timeshift, a rich sortable video club, radio, offline downloads, and adult-content protection.

The Build: A Single Backend Behind Web-View Apps

The player is a custom Laravel application delivered as web-view apps across all the target platforms, so one codebase and one API reach every device instead of a hand-built native app per screen. That single backend is what made this a custom software development engagement rather than an off-the-shelf player skin: the reach, the integration, and the stream protection all had to be engineered against the operator’s existing infrastructure.

Integration is what makes the app feel first-party. It talks to the Ministra Panel API for channels, user subscriptions, and push messages, and to XONE for streaming, so it behaves like a native Ministra client while wearing the operator’s branding and login. Streams are served over secure, temporary links obtained through the Ministra API, so a stream URL is protected and expires rather than sitting exposed for anyone to lift. And the app syncs with each user’s subscription to show only paid content, surfacing the expiry date and blinking a warning in the final seven days so renewals get prompted at the right moment.

The interface delivers four main areas plus downloads. Live TV carries channels with an electronic programme guide and timeshift replay, favourites, and category and genre sorting. The Videoclub holds movies and series with descriptions and artwork, multi-way sorting, offline downloads, and two selectable templates, one in a Netflix style and one in a set-top-box style. Radio offers channel lists with favourites and sorting. A downloads area keeps offline content protected against copying on the device, a message inbox stores push notifications from the portal, and settings cover PIN, language, subtitles, buffering, hardware decoding, and theme. The app ships in English and German with room for more languages.

Technical Architecture

At the core this is a Laravel backend and API feeding web-view clients across many platforms, wired into Ministra and XONE, with security and entitlements enforced on every stream. The architecture separates into subsystems, each mapped to a requirement.

  • One backend, many platforms. A single Laravel backend and API serve web-view apps across Android, Android TV, iOS, LG webOS, Samsung Tizen, Apple TV, Roku, and Android set-top boxes, so one codebase reaches every screen.
  • Ministra and XONE integration. The app uses the Ministra Panel API for channels, subscriptions, and messages and XONE for streaming, so it acts as a native Ministra client under the operator’s own branding.
  • Secure streaming links. Streams play over secure, temporary links from the Ministra API, so URLs are protected and expire instead of being freely shareable.
  • Subscription-aware content. The app syncs with each viewer’s subscription to show only what they have paid for, displays the expiry date, and warns in the final week.
  • Live TV, VOD, and radio. Live TV brings an EPG and timeshift, the Videoclub brings two UI templates, rich sorting, and offline downloads, and radio brings its own lists, all with PIN protection for adult content.
  • Offline, inbox, and settings. Copy-protected downloads, a portal message inbox, and settings for PIN, language, subtitles, decoding, and theme round out a personal, controllable player.

The pieces most worth engineering by hand were the Ministra integration and the secure link handling, because that is where a generic player would either break the operator’s existing subscription logic or leave streams exposed. A multi-platform, integration-heavy product like this is squarely enterprise software development, where the value is in fitting a new front end onto infrastructure that already runs the business.

Challenges Solved

Reaching every platform from one app was the first win: web-view delivery on a single Laravel backend put the same player on TVs, phones, streaming devices, and set-top boxes without a separate native build to maintain per screen. Behaving like a native Ministra client was the second: integration with the Ministra Panel API and XONE meant channels, subscriptions, and messages all came from the operator’s existing system, under the operator’s own branding, so it felt like their product rather than a third-party shell.

Protection and entitlements were solved together. Secure, temporary links kept streams from being copied or shared out of the app, and subscription syncing meant each viewer saw only paid content with a clear expiry warning, so the paid model held. The rest was making it a real television experience rather than a stream list: an EPG and timeshift for live TV, two interface templates and offline downloads for the video club, radio, adult-content PIN gating, and per-viewer controls for language, subtitles, and theme. Delivering that depth against live streaming infrastructure is heavy backend work, the kind teams often hire back-end developers specifically to get right.

The Result

The outcome is one branded IPTV player that reaches almost any screen a subscriber owns, streams live TV, on-demand video, and radio over protected links, and shows each viewer exactly what their subscription covers. It runs as web-view apps across the full platform list from a single Laravel backend, integrates natively with Ministra and XONE, and carries the operator’s logo and login throughout, so it reads as a first-party service rather than a generic player.

It fits the operator because the reach, the integration, and the stream protection were engineered against their existing infrastructure instead of forcing them onto someone else’s. If you are planning a white-label streaming product across TV and mobile, you can tell us about your platform and middleware and we will map the integration, the security, and the device coverage before any UI is built.

Frequently Asked Questions

What is a white-label IPTV player?

It is a streaming app an operator ships under their own brand rather than a third party’s. This one carries the operator’s logo and portal login and plays their channels and library, while behind the scenes it runs on a custom Laravel backend integrated with the operator’s existing Ministra and XONE systems.

How does one app run on TVs, phones, and set-top boxes at once?

It is delivered as web-view applications from a single Laravel backend, so one codebase and API reach Android, Android TV, iOS, LG webOS, Samsung Tizen, Apple TV, Roku, and Android set-top boxes. That avoids building and maintaining a separate native app for every platform while keeping the experience consistent.

How are the video streams protected?

Streams are served over secure, temporary links obtained through the Ministra API. Because each link is short-lived and expires, a stream URL cannot be copied out of the app and shared freely, which protects the operator’s paid content.

How does the app show only what a subscriber has paid for?

It syncs with each user’s subscription through the Ministra Panel, so a viewer sees only the channels and library their plan covers. The app also displays the subscription expiry date and blinks a warning in the final seven days, prompting renewal before access lapses.

Does the player integrate with existing Ministra and XONE systems?

Yes. It uses the Ministra Panel API for channels, subscriptions, and push messages and XONE for streaming, so it behaves like a native Ministra client. The operator keeps their existing middleware and streaming infrastructure, and the app becomes the branded front end on top of it.

Leave a Reply