Inspiration
The best shows and movies usually come from friends ("you have to watch this"), but those tips get lost in group chats. By the time you sit down in front of the TV, you can't remember what anyone said, so you scroll the streaming apps instead. Gottawatch puts your friends' picks where you actually decide what to watch: the living-room TV.
What it does
- Recommend from your phone in seconds. Search a show or movie, add a short note, optionally say which streaming app has it, and send it to a friend's household.
- A lean-back feed on Fire TV. The TV shows everything your circle sent, with who sent it and their note, fully driven by the remote's D-pad. New picks arrive within about 20 seconds.
- Top pick. One title is put first: the one most recommended by your friends, with a reason built only from their own notes ("Chosen only from titles your circle sent").
- Get to the show. Pressing Watch shows a clear tip, "Open {streaming app} and search for '{title}'", with the friend's note, so Select never dead-ends.
- Mark seen, with Undo. Watched titles leave the feed, and an Undo toast covers mistakes.
- Pair a TV with a code or QR. The TV shows a short code; enter it (or scan the QR) on the phone. Forget this TV unpairs it, with a gentle confirmation.
- Private, mutual circles. Gottawatch is invite-only: you invite friends by email or a copy link, and connections are always two-way. Sign-in is a one-time email code; removing a friend asks for confirmation first.
- Everywhere you are. Fire TV app, a phone web app you can add to your home screen, an iPhone app (TestFlight), and an Android APK. Judges can also run the same TV app in a desktop browser.
How we built it
- Fire TV app: React Native (Expo), Fire OS first and built to stay Vega-ready, starting from Amazon's shared multi-TV sample. Remote handling covers D-pad, Select, Back and Menu, with deliberate focus placement after every action. The same code is exported with react-native-web for the browser TV.
- Phone apps: a Vite + React web app (served through Amazon S3 + CloudFront at gottawatch.app, with an AWS Certificate Manager certificate) and a native Expo app for iOS and Android, sharing one typed API contract (zod schemas in
packages/contract). - Backend on AWS (us-east-1), all serverless and defined in AWS CDK: API Gateway HTTP API with a Lambda authorizer, Lambda handlers in Node/TypeScript, a DynamoDB single table (with TTL for pairing codes), SSM for secrets, CloudWatch logs, per-route throttling and AWS Budgets cost alarms. GitHub Actions deploys on push.
- Catalog: TMDB through a server-side proxy (the key never reaches a device). A demo catalog of made-up titles powers the video so no real posters or trademarks appear.
- Email: one-time sign-in codes and friend invites sent with Resend from
[email protected].
Challenges we ran into
- Getting a sideloaded build to run on the stick. The sample's debug APK had no JavaScript bundle inside it (it expects a Metro dev server over ADB), so a build copied onto a Fire TV Stick couldn't start on its own. A 20-line Expo config plugin that embeds the bundle in debug builds fixed it.
- Fire TV remote keys. The sample's remote-control layer had no Menu key, and Android's Back arrived as a different key code than expected. We mapped Menu and Back ourselves and fixed the listener's type so focus always lands somewhere sensible after Back.
- Cost safety on a brand-new AWS account. We planned to cap each Lambda with reserved concurrency, but a new account's limit is 10 concurrent executions, so any reservation would fail the deploy. We moved the cap to API Gateway per-route throttling and AWS Budgets alarms instead.
Accomplishments that we're proud of
- It runs on a real Fire TV Stick (Fire OS 6.7.1.1), not just an emulator, and the demo video was filmed straight from the stick.
- A friend can send a recommendation from their phone in under 10 seconds, and it lands on the TV with their name and note.
- One serverless AWS backend serves the Fire TV app, the phone web app, an iPhone app and an Android app.
- Circles are private and always two-way, and the wording stays gentle throughout (Undo on Mark seen, confirmations before removing anything).
What we learned
- Designing for the remote is its own craft: every action has to leave focus somewhere sensible, and Back should never dead-end.
- On a short list, a simple honest rule (the title most recommended by your friends) beats pretending there's AI behind it.
- A brand-new AWS account has limits you only find at deploy time, so cost safety belongs in API Gateway throttling and Budgets alarms from day one.
- Fire OS sideloading and remote keys need a few fixes on top of the sample app before a build runs on its own on a real stick.
What's next for Gottawatch
- A fuller web version.
- Smarter Top pick (for example with Amazon Bedrock) once people's lists get long; today, rule-based is the right call for short lists.
- Direct launch into the streaming app where verified deep links exist.
- Vega OS build and a Fire TV Appstore listing.
- Ask Alexa what your friends recommend.
- Connect Gottawatch to your own personal AI assistant through MCP (Model Context Protocol).
Built With
- amazon-api-gateway
- amazon-cloudfront
- amazon-dynamodb
- amazon-web-services
- aws-cdk
- aws-lambda
- aws-ssm
- expo.io
- github-actions
- node.js
- react
- react-native
- react-native-web
- resend
- tmdb
- typescript
- vite
Log in or sign up for Devpost to join the conversation.