Inspiration
Bedtime is the one screen-time moment every family shares, yet almost everything on a TV is designed to keep kids watching. We wanted to flip that: a TV app where the child is the storyteller and the story is designed to end in sleep.
What it does
Nightlight is a bedtime story studio for Fire TV (Vega OS). A parent and child build a story together using only the remote:
- Story wizard (6 steps, all D-pad): hero (preset or "draw your own"), world, art style, tonight's lesson (bravery, sharing, kindness…), length and narrator.
- Illustrated player: slow pan-and-zoom art, word-by-word captions, and choice points, where the child picks what happens next with the remote, with a soft countdown that chooses a default.
- Wind-down mode: every page is calmer than the last. The screen warms and dims, the pace slows, and the story ends on a goodnight scene and a night-light sleep screen with a timer.
- Library & series: saved heroes and past stories, so "Pip's next adventure" can continue tomorrow.
- Parent settings (PIN): allowed lessons, length limits, captions.
How we built it
- React Native for Vega (RN 0.83) on Vega SDK 0.24, run on the Vega Virtual Device. 10-foot UI throughout: a 1920×1080 design grid, large focus targets with a clear focus ring, and Back always works.
- Amazon Devices Builder Tools (ADBT): the MCP server, Agent Skills and steering docs, version-pinned and committed so every teammate and agent has the same context.
- Original content only: illustrations are drawn in code from shapes, so there's no third-party IP.
- Reproducible monorepo: pnpm workspace, shared API/event types, pinned toolchain (
toolchain.json). From clone to a running app is:
pnpm bootstrap && pnpm tv:sim
- CI runs lint + typecheck + 14 tests on Ubuntu and Windows.
- AWS backend skeleton (CDK): HTTP API → Lambda (Node 24, arm64), DynamoDB, private S3 + CloudFront. It's ready for the planned all-Amazon AI stack: Nova 2 Lite on Bedrock for story text and drawing-to-hero vision, Polly neural voices with speech marks for synced captions, and Bedrock Guardrails for child-safe content.
Wind-down is planned around a story "energy" value \( e \in [0, 1] \) that falls page by page. Narration speed will follow it:
$$ \text{rate}(e) = 80\% + 20\% \cdot e $$
so the voice slows from 100% at the start to about 80% by the goodnight page.
Challenges we ran into
- Retired image models: both Amazon image models (Nova Canvas and Titan Image) reached end of life before the deadline, so we moved to curated original art.
- Polly generative voices don't return speech marks, so we chose neural voices to keep word-highlighted captions.
- Remote key names: Vega OS 1.2 sends raw names (
enter,play) that differ from the documented ones. We measured them on the simulator and normalized them in one place. - No simulator screenshots: we verified the UI with key injection, log reading and a small network "probe".
- A broken test mock: the Kepler Jest preset's BackHandler mock is broken, so we wrote our own.
- AWS credits didn't arrive in time to switch on live generation, so we shipped the full flow as a polished showcase first.
Every issue is in our friction log, with severity and workaround, and every design choice is in our decision record.
What we learned
- Designing for the couch and the D-pad changes everything, from focus states to how long a choice countdown should feel.
- Agent tooling (MCP + skills) speeds up platform work a lot, as long as you pin versions.
- Check that AI models still exist early. Two of ours were retired mid-hackathon.
What's next
Switching on live AI once AWS credits land:
- Story text: Nova 2 Lite with Guardrails.
- Narration: Polly, with speed that follows wind-down.
- Draw your own hero: the kid draws on paper and a parent snaps it with a phone via a QR code on the TV.
- Device testing: on a physical Fire TV.
Built With
- amazon-api-gateway
- amazon-bedrock
- amazon-cloudfront
- amazon-devices-builder-tools
- amazon-dynamodb
- amazon-nova
- amazon-polly
- amazon-web-services
- aws-cdk
- aws-lambda
- bedrock-guardrails
- claude
- fire-tv
- github-actions
- javascript
- jest
- mcp
- node.js
- pnpm
- react-native
- typescript
- vega-os
- vega-sdk
Log in or sign up for Devpost to join the conversation.