nahom endale
Case StudiesAboutResume
Nahom Endale

© 2026 Nahom Endale, New York

Case StudiesAboutResumeGitHubLinkedIn
Nahom Endale/Case studies/Live TV Streaming
Live TV Streaming logo

Live TV Streaming

Free live-TV streaming & TV guide

Thousands · Monthly active users, up from zero

100+ · Users in the first 3 months

Solo · Designed, built, and shipped

Organic · 100% SEO, no paid spend

01The Challenge

+
Free IPTV is a crowded, low-trust space full of broken streams and ad-choked players. The opportunity was a fast, clean, genuinely free experience that people could actually find, which meant winning on search, not on ad budget.

02The Solution

+
I designed, built, and shipped the entire product end to end. The Next.js app plays live channels directly in the browser with hls.js and mpegts.js, streams never route through my servers, so there is no bandwidth cost or video path to scale. Supabase handles auth, playlists, and crowd-sourced channel health, and a library of programmatic SEO guide pages compounded into thousands of monthly users with zero paid acquisition.

03Features

+

Streams play client-side with hls.js and a lazy-loaded mpegts.js, no video ever routes through my servers.

An EPG shows what's on across channels so viewers can browse the schedule, not just a wall of streams.

Client probes flush to Supabase, hydrate working/broken state, and gate playback on confirmed-dead streams.

Import custom M3U playlists and search across 10K to 350K entries instantly with a client-side FlexSearch index.

Around 45 guide pages plus per-channel and per-category pages with JSON-LD, all wired into a dynamic sitemap.

Supabase auth with favorites, trending, and watch tracking across sessions.

04System Architecture

+

Source

Channels + M3U

App

Next.js App

Client

In-browser player

Direct

IPTV Origins

Store

Supabase

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

Source

Channels + M3U

App

Next.js App

Client

In-browser player

Direct

IPTV Origins

Store

Supabase

05Technology Stack

+

Next.js 16 (App Router) · React 19 · Tailwind v4 · Framer Motion · Zustand

hls.js · mpegts.js · screenfull · Direct client-side playback

Supabase · FlexSearch · Curated channel data

Programmatic SEO · JSON-LD · PostHog · Affiliate links

06Key Learnings

+
  1. 01Keeping playback fully client-side meant streams never touch my infrastructure, no bandwidth costs and nothing to scale on the video path.
  2. 02Programmatic, intent-matched guide pages compounded into the bulk of organic traffic, content was the growth engine, not ads.
  3. 03FlexSearch on the client made discovery across huge imported playlists feel instant without standing up a search backend.
  4. 04Crowd-sourced health checks kept the channel grid trustworthy as upstream streams came and went.
Visit live site ↗
Visit live site ↗
Home, with a featured live channel
Home, with a featured live channel
In-browser M3U and M3U8 player
In-browser M3U and M3U8 player
Imported playlist, grouped by country with live status
Imported playlist, grouped by country with live status
Organize: move channels between categories
Organize: move channels between categories
Home, with a featured live channelIn-browser M3U and M3U8 playerImported playlist, grouped by country with live statusOrganize: move channels between categories
Home, with a featured live channel
previous← Concrete BillsnextBravoResume →