Inspiration
In busy hospital outpatient departments in India, a nurse stands at the door and shouts names over the noise. Elderly patients and people who don't speak the language miss their turn, and the TV on the wall shows nothing useful. We wanted that TV to do two jobs: keep the waiting room calm with health tips and camp notices, and call each patient clearly, so nobody has to shout and nobody misses their turn.
What it does
- TV (Fire TV app): a full-screen loop of photos and videos – health tips, vaccination-camp posters, short clips – with the clock and live weather. Wide pictures fill the screen; tall phone photos are shown whole.
- Calling a patient: when the doctor is ready, a nurse taps Call next on her phone. The TV shows a large card – Token 12 · Ravi Kumar · Room 2 – plays a chime and announces twice: "Token number 12, Ravi Kumar. Please go to room number 2." A video with sound pauses for the announcement.
- No app for staff: nurses scan the QR code on the TV and the staff page opens in the phone's browser, on Wi-Fi or mobile data. The first nurse chooses a staff PIN; others need it to join. Patients can see the QR but cannot change anything.
- Patient queue: reception adds patients (name, optional mobile, optional room); token numbers are automatic and restart at 1 every day. Every nurse sees the same live list. Call next, recall, skip, done, edit.
- Photos & videos: staff add pictures and videos from their phone; big phone videos upload in parts straight to the cloud and are converted to 1080p for the TV.
- TV remote: OK shows the staff QR, Back hides it, Menu sets the screen name and room.
- Privacy by design: phone numbers are never sent to the TV, names can be hidden, the list clears at midnight, and patient records delete themselves after 36 hours.
How we built it
- Fire TV app (Kotlin, Fire OS): a full-screen WebView app with a JavaScript bridge to Android text-to-speech, sound without a key press, screen always on, start after power-on, and native remote-key handling (OK / Back / Menu).
- Server (Node.js, Express, WebSocket): keeps phones and TVs in sync in real time; QR codes; staff PIN (scrypt-hashed); a Cloudflare Tunnel gives phones on any network a link, and phones follow the new link automatically after the PC restarts.
- AWS:
- AWS Lambda + Amazon DynamoDB – the patient queue: atomic daily token counter (conditional writes, so two nurses pressing "Call next" at once never get the same patient), per-patient rooms, TTL that deletes patient rows after 36 hours.
- Amazon S3 – photos, videos and screen settings. Phones upload big videos directly to S3 with presigned multipart uploads (8 MB parts, 3 at a time, automatic retries); the server then fetches the original in parallel and converts it to 1080p H.264 with ffmpeg.
- Amazon Polly – the announcement voice: a natural Indian-English neural voice ("Kajal"). The server turns each call into an MP3 that every screen plays, so announcements don't depend on the TV having a speech engine; the device's own voice is the fallback.
- TV web UI: HTML/CSS/JS – glowing call card, weather (Open-Meteo), slideshow with cross-fades, a turning "example pictures" home screen.
Accomplishments that we're proud of
- A nurse can set up a TV in under a minute: scan, choose a PIN, done – nothing to install.
- A real, natural Indian-English announcement that works on every kind of screen.
- Patient privacy built in from the start (no phone numbers on screen, automatic deletion).
What we learned
How to build for the "10-foot" screen and the remote control, how far a WebView-based Fire OS app can go, and how much of a device app's reliability comes from cloud services – S3 multipart uploads, DynamoDB conditional writes and Polly.
What's next
- Alexa+ / voice: "Alexa, call the next patient" for doctors without a free hand.
- Several TVs showing one queue (big waiting halls).
- Announcements in Hindi, Kannada and Tamil (Polly bilingual voices).
- Hosting on AWS (EC2/CloudFront) with a fixed address, and publishing the Fire TV app on the Amazon Appstore.
Built With
- amazon-dynamodb
- amazon-polly
- amazon-web-services
- android
- aws-lambda
- aws-sdk
- cloudflare-tunnel
- css
- express.js
- ffmpeg
- fire-os
- fire-tv
- html
- javascript
- kotlin
- node.js
- websocket
- webview
Log in or sign up for Devpost to join the conversation.