Skip to content

Latest commit

 

History

History
53 lines (45 loc) · 2.23 KB

File metadata and controls

53 lines (45 loc) · 2.23 KB

Netflix Remote — Project Context

What is this?

A self-hosted web app that controls your TV (specifically for Netflix) from your phone/browser. Runs on your local network.

Tech Stack

  • Next.js 14 (App Router) — React frontend + API routes backend
  • Tailwind CSS 3 — Styling (dark Netflix theme)
  • TypeScript 5 — Type safety
  • lgtv2 — LG webOS TV control via WebSocket/SSAP
  • ws — WebSocket for Samsung TV control
  • node-ssdp — SSDP network discovery for finding TVs

Architecture

  • Browser → HTTP → Next.js API routes → TV-specific protocol → Smart TV
  • Backend is required because browsers can't connect to TV protocols (CORS, raw TCP, UDP)
  • Singleton TV connection managed in src/lib/tv-manager.ts
  • Config persisted to ~/.netflixremote/config.json

TV Adapter Pattern

  • src/lib/adapters/types.ts — Unified TVAdapter interface
  • src/lib/adapters/lg-webos.ts — LG webOS (SSAP over WebSocket port 3000)
  • src/lib/adapters/samsung.ts — Samsung Tizen (WebSocket port 8001/8002)
  • src/lib/adapters/roku.ts — Roku (HTTP REST on port 8060)
  • src/lib/adapters/stub.ts — Placeholder for unimplemented platforms
  • src/lib/adapters/index.ts — Factory function + brand list

Key Files

  • src/app/page.tsx — Root redirect (auto-connect or setup)
  • src/app/setup/page.tsx — TV selection, IP entry, pairing flow
  • src/app/remote/page.tsx — Main remote UI (d-pad + keyboard tabs)
  • src/app/api/tv/*/route.ts — All TV control API endpoints
  • src/lib/tv-manager.ts — Singleton connection manager
  • src/lib/config.ts — Config file read/write
  • src/lib/discovery.ts — SSDP network scanner

Supported TVs

  • LG webOS — Full support (remote, keyboard via IME, media, volume, apps)
  • Samsung — Full support (remote, keyboard via SendInputString, media, volume)
  • Roku — Full support (remote, keyboard via Lit_ prefix, media, volume)
  • Others — Stub adapters ready for implementation

Running

npm run dev    # Development on http://localhost:3000
npm run build  # Production build
npm start      # Start production server

Netflix App IDs per Platform

  • LG webOS: netflix
  • Samsung: uses KEY_HDMI or Smart View SDK
  • Roku: 12