import Link from "next/link"; export default function LandingPage() { return (
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.
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.
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.
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.
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.
{`# 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.