Inspiration
A common problem I see in families is deciding what to watch. Everyone sits down on the couch, someone scrolls through Netflix, someone else says "not that one", and twenty minutes later you're still arguing. In my house it's usually my mom and me, and we rarely agree.
I wanted to make that moment a lot more fun and inclusive. Everyone should get a say, nobody should feel steamrolled by the loudest person in the room, and it shouldn't take longer than the movie itself.
What it does
CouchVote is a Fire TV app that turns "what are we watching?" into a quick group game:
- Set up 2 to 4 voters on the TV, with names and avatars.
- Pick a mood (movies, TV shows or both, genres, year, length) or search for any title.
- Everyone nominates up to 3 titles.
- Everyone scans a QR code on the TV with their phone. No app to install, no account.
- Each person rates every nomination from 1 to 10 privately on their phone. The TV only shows who's done, never anyone's ratings.
- CouchVote builds a shortlist of 3 (Best compromise, Most popular and a Wildcard), and everyone casts a secret final vote.
- The winner is revealed on the TV with a bit of a show, and CouchVote tells you where you can stream, rent or buy it.
How I built it
The app: Vue 3, TypeScript and Vite, designed for a 1920×1080 TV screen and controlled entirely with the Fire TV remote's D-pad, OK and Back.
Fire TV: it's packaged as a Fire OS app with a small Android wrapper (a full-screen WebView), and tested on a Fire TV Stick running Fire OS 8.1.
Phones: the Fire TV app runs a tiny web server on the home Wi-Fi, so phones join by scanning a QR code and talk directly to the TV. Nothing goes to the cloud except the movie lookups.
Movie data: everything comes from the TMDB API, including posters, genres and "where to watch" data (from JustWatch).
Picking the winner: the scoring is a simple formula, not AI: 70% of the average rating plus 30% of the lowest rating. That way one person who really hates a movie pulls it down, and the "best compromise" actually feels fair. Every shortlist card explains why it's there.
Tools: I built it with Claude Code as my pair programmer, from the app itself to security checks and editing the demo video.
Challenges I ran into
Remote-only navigation: every single screen had to work with just a D-pad. Getting focus to move sensibly, not get lost, and jump to the right button at the right time took a lot of tuning.
TV keyboards: on Fire TV and Android TV, the on-screen keyboard pops up and covers half the screen. I had to rethink how names and search get typed.
Running inside a TV app: the app loads from local files inside the APK, and modern JavaScript modules refuse to load that way. I had to build everything into a single bundle.
Keeping votes secret: the TV needs to show progress ("2 of 6 rated") without ever revealing who rated what. I also had to lock down the phone connection so nobody else on the Wi-Fi could join a session.
Real hardware: my first demo was accidentally recorded on a Sony Android TV, not a Fire TV, so I re-shot everything on a real Fire TV Stick.
What I learned
Designing for TV is a different world: big text, clear focus and no mouse. Small details matter a lot too: just highlighting the number you tapped on your phone made rating feel much better.
Fire TV development: how Fire OS and Vega OS differ, how WebView apps run on Fire TV, and how to install and debug over adb.
Fairness is a design problem: the hardest part wasn't the code. It was making sure everyone on the couch feels heard.
What's next
Saving your family's voters between movie nights, deep links straight into streaming apps, and a native Vega OS version.
Built With
- android
- fire-os
- fire-tv
- java
- javascript
- node.js
- tmdb
- typescript
- vite
- vitest
- vue3
- webview

Log in or sign up for Devpost to join the conversation.