👆🏾
👆🏾
Kaleidocast: IPTV Client

Kaleidocast: IPTV Client

Project Overview

A cross-platform IPTV client for macOS, iOS, and tvOS, simplifying access to free over-the-air channels and other IPTV content.

Category

Full Stack DevelopmentHuman Centered Design

Links

Collaborators

Solo Project

Date

January 2023 - Present

My Role

Developer

Overview

IPTV (Internet Protocol Television) is a digital television broadcasting system that delivers TV content over IP networks. It allows users to stream live TV channels and on-demand content through internet-connected devices rather than traditional cable or satellite systems.

The Problem

  • Navigating IPTV formats is challenging for non-technical users
  • There's a lack of user-friendly interfaces for managing IPTV content
  • Inconsistent experience across different devices and platforms

Content Distribution

IPTV content is typically shared and accessed through two primary methods:

  1. M3U Playlists:

    • M3U (Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator) is a file format for multimedia playlists.
    • In IPTV, M3U files contain lists of TV channels and their streaming URLs.
    • For a collection of free and legal IPTV resources, check out the iptv-org/iptv repository on GitHub.
  2. EPG (Electronic Program Guide) Data:

    • EPG provides detailed information about TV programs, including schedules, descriptions, and metadata.
    • It's usually distributed in XMLTV format, a standardized XML structure for TV listings.
Kaleidocast Apple TV homepage

Kaleidocast Apple TV Homepage

The Solution

The goal was to create a tool that not only simplified the technical complexities of IPTV but also offers a consistent experience across different platforms.

How it works:

  1. Import any M3U playlist e.g. (open source) and/or EPG data by entering the URL in 'Sources' tab
  • I also built handling for Xtreme Codes API, which is popular with IPTV services
  1. That's it! The interface and functionality should be very similar to what people are accustomed to with other popular streaming services, just that if you don't have access to a show, channel or movie .
  • You don't even need to add sources for this to have utility as it will tell you where to watch sporting events, or notify you when the next episode of a show is available
  • For the advanced user, you can also view the raw files that were ingested in the event that we weren't able to match a piece of content

System Design

  • Wrote custom parsers for M3U playlist and EPG data to efficiently ingest data and handling refreshing

  • Store playlist / EPG data on top of Core Data for efficient local storage

  • iCloud sync for cross-device data. If you started watching a show on your iPhone, you can pick up the progress from Apple TV

  • Dynamic video player selection based on content format and codec. Apple's built-in player library does not cover nearly enough formats so I needed to support at least one more player as a catch-most

  • Integrated with TheMovieDB and TheSportsDB APIs to provide the content metadata, with custom matching logic that searches the user's database if they have the ability to play that content

  • Wrote custom algorithms for ranking sports events and popular content depending on user's location and seasonality (e.g. Olympics)

  • iOS and macOS share similar design interfaces (tap / click), however tvOS has a different paradigm which is 'focus' based, so it was a challenge to write code in a composable way that ~80% could be shared

  • Wrote a custom UI on top of VLC player framework, as there were no libraries that existed for this

Kaleidocast system design diagram

System Design

Impact and Future Plans

Current Impact

  • Simplifies IPTV access for non-technical users
  • Consistent experience across Apple ecosystems

User Feedback

  • Positive feedback from early adopters
  • Recieved requests for additional features and platform support (Chromecast, Roku / Google TV)

Future Plans

  1. Expanding the app to Android
  2. Adding the ability to share playlists and recommendations

Screenshots

Kaleidocast mobile sources page

Mobile Sources Page

Kaleidocast Apple TV home screen

Apple TV Home Screen

Kaleidocast Apple TV episode detail

Apple TV Episode Detail

Kaleidocast macOS live TV guide

macOS Live TV Guide

Kaleidocast mobile TV guide

Mobile TV Guide

Kaleidocast Apple TV guide

Apple TV Guide

Kaleidocast macOS home screen

macOS Home Screen

Kaleidocast macOS program detail

macOS Program Detail

Kaleidocast mobile live TV detail

Mobile Live TV Detail

Kaleidocast custom VLC player for Apple TV

Custom VLC Player for Apple TV

Kaleidocast macOS sources page

macOS Sources Page