A self-hosted web app that turns your phone or browser into a remote control for your Smart TV. Built for controlling Netflix, but works as a full TV remote.
Run it on your local network, open it on your phone, and control your TV — no app store needed.
| Brand | D-Pad | Keyboard | Media | Volume | Apps |
|---|---|---|---|---|---|
| LG webOS | Yes | Yes | Yes | Yes | Yes |
| Samsung | Yes | Yes | Yes | Yes | Yes |
| Roku | Yes | Yes | Yes | Yes | Yes |
- D-pad navigation — Arrow keys, OK, back, home
- Media controls — Play, pause, stop, rewind, fast-forward
- Volume control — Volume up/down, mute
- Keyboard input — Type text on your TV from your phone
- Quick actions — Launch Netflix, power off
- Auto-discovery — Finds TVs on your network via SSDP
- Auto-reconnect — Reconnects automatically if the connection drops
- Dark theme — Netflix-inspired UI designed for mobile
- Node.js 18+
- A Smart TV on the same network
git clone https://github.com/jdcodes1/netflixremote.git
cd netflixremote
npm install
npm run devOpen http://localhost:3000 on your phone or browser.
- The app will scan your network for TVs
- Select your TV or enter its IP address manually
- Accept the pairing prompt on your TV (LG/Samsung)
- Start controlling your TV
Phone/Browser → HTTP → Next.js API routes → TV protocol → Smart TV
The backend is required because browsers can't connect directly to TV protocols (WebSocket/SSAP for LG, WebSocket for Samsung, HTTP for Roku). The Next.js server acts as a bridge.
- Next.js 14 — Frontend + API backend
- Tailwind CSS — Styling
- TypeScript — Type safety
- lgtv2 — LG webOS control (SSAP over WebSocket)
- ws — Samsung control (WebSocket)
- node-ssdp — TV network discovery
- This app must run on your local network — it connects directly to your TV
- Cloud deployments (Vercel, etc.) won't be able to reach your TV
- LG webOS TVs must be powered on (not standby) to accept connections
- First connection to LG/Samsung TVs requires accepting a pairing prompt on the TV
ISC