Skip to content

← ProjectsCase study — NOW

HQSOLTECH IPTV

A cross-platform IPTV player built on Kotlin Multiplatform + Compose Multiplatform: one UI codebase across Android, iOS, macOS, Windows, and Android TV, with per-platform playback engines chosen for the streams people actually have.

Overview

HQSOLTECH IPTV is a consumer product with an unforgiving quality bar: a player for the IPTV playlist people already own. It doesn't sell content — it makes the user's own subscription feel premium: fast, private, and watchable on every screen they have.

One Kotlin Multiplatform + Compose Multiplatform codebase ships it to Android, iOS, macOS, Windows — and Android TV with full D-pad navigation.

Problem

Real-world IPTV is hostile territory for a video player:

  • Streams arrive as raw MPEG-TS, AC3/E-AC3 audio, H.265 — formats stock players routinely refuse or mangle.
  • Live streams stall; a player that makes the user hand-reconnect loses them.
  • TV is a first-class surface, and typing credentials with a remote is misery.
  • The category is polluted with apps full of ads and trackers — privacy is a differentiator, not a checkbox.

Solution

  • Per-platform playback engines behind one interface: Media3/ExoPlayer on Android, libVLC on desktop, AVPlayer on iOS — each platform gets the engine that actually plays the messy streams, while the UI stays one codebase.
  • Quality-first playback: edge-to-edge video with explicit aspect modes (no black bars), catalogue caching for instant re-opens, and stalled live streams that reconnect on their own.
  • Built for the big screen: full Android TV support, and a pairing flow where the TV shows a QR code and the phone does the typing — end-to-end encrypted over local Wi-Fi.
  • Privacy as architecture: no ads, no trackers, no analytics SDKs, no accounts; credentials stored encrypted on-device and sent only to the user's own provider.
  • Honest monetization: a one-time purchase unlocks everything — no subscription for a player.

Architecture

The playback layer is an expect/actual boundary: shared VideoPlayer and cast interfaces in common code, with each platform supplying its engine. Above that line, the Xtream Codes client (Ktor), domain models, EPG, and the entire Compose UI are shared. The hard problems — codec coverage, aspect correctness, reconnection — live in exactly one place per platform.

Stack

Kotlin MultiplatformCompose MultiplatformMedia3 / ExoPlayerlibVLCAVPlayerKtorAndroid TV

Gallery

  • HQSOLTECH IPTV — screenshot 1
  • HQSOLTECH IPTV — screenshot 2
  • HQSOLTECH IPTV — screenshot 3

Results

One codebase, five surfaces (phone, tablet, TV, Mac, Windows), shipped to the Play Store with a privacy-first listing.