import Link from "next/link"; export default function LandingPage() { return (
{/* Header */}
K-TV
{/* Hero */}

Your media library,
broadcast as linear TV

K-TV turns your self-hosted media collection into algorithmic TV channels. Define programming blocks, set filters, and let the scheduler fill them. Viewers tune in mid-show — no seeking, just TV.

Watch TV Read the docs
{/* Feature cards */}

Linear scheduling

Draw time blocks on a 24-hour timeline. Each block has its own filters, fill strategy, and recycle policy. Schedules are generated on demand and valid for 48 hours.

Jellyfin & local files

Connect your Jellyfin server or point K-TV at a local directory. Filter by genre, decade, tags, series, or collection. All providers share the same scheduling engine.

EPG & live program guide

A full electronic program guide shows what is on now and what is coming up. Keyboard shortcuts, channel numbers, subtitles, and an "Up next" banner are all built in.

Import, export & IPTV

Channels are plain JSON — paste one from an LLM, share it with a friend, or import it across instances. Export an M3U playlist and XMLTV EPG to watch in TiviMate, VLC, or Infuse.

{/* Quick-start */}

Quick start

{`# Docker (recommended)
git clone  k-tv && cd k-tv
cp .env.example .env   # fill in JWT_SECRET, COOKIE_SECRET, JELLYFIN_*
docker compose up -d

# Or run from source
cd k-tv-backend && cargo run
cd k-tv-frontend && npm install && npm run dev`}

See the{" "} docs {" "} for full environment variable reference and Docker deployment instructions.

{/* Footer */}
); }