Inspiration

Millions of older people live alone, and their families live far away. Doorbell cameras give those families clips and a stream of motion pings, but not the answer to the one question that matters: is Mum's day normal? We wanted a Ring app that stays quiet when everything fits, and speaks up only when something is actually wrong.

What it does

Doorstep watches a parent's front door through the Ring Partner API and checks what happens against a simple care plan:

  • Missed visit: the home aide didn't arrive in their window
  • Quiet morning: no door activity by a set time
  • Package left out: a parcel still on the step hours later
  • Late-night activity: a doorbell ring or person at the door overnight
  • Unanswered doorbell

Every event gets one plain sentence written by Amazon Nova Lite on Amazon Bedrock, from the Ring snapshot. It describes what happens and never identifies anyone. Each alert opens to the real Ring photo, a "why this fired" line tied to the care plan, the events around it, and caretaker actions: call the parent or the carer, mark it as expected, or get a reminder. Unacknowledged urgent alerts escalate to a second family member. Each evening Nova Lite writes a short digest of the day, and a full-screen visual doorbell at /tv helps residents who can't hear the chime. Look now opens live Ring video from an alert.

How we built it

  • Next.js, TypeScript, Tailwind web app with SQLite
  • A typed Ring Partner API client: devices, status, event history, 1920×1080 watermarked snapshots, and WHEP live view, tested against the real Ring Developer Playground
  • Because the Playground doesn't deliver webhooks, Doorstep polls in LIVE mode and can record and replay real Playground data, with honest labels on screen for live, recorded and example events
  • Amazon Bedrock Converse API with Nova Lite for image captions and the daily digest, with caching. Captioning every event cost under one US cent
  • A pure-function rules engine with 105 automated tests, including the rule that absence alerts only judge time Doorstep could actually see

Challenges we ran into

  • New-account Bedrock quotas were provisioned at 0. We documented it, opened a support case, and built a clearly labelled fallback until AWS lifted it
  • Ring Playground behaviour the docs don't mention: snapshots default to 640×360, history only starts after the token is issued, every simulated event arrives as on_demand, and closing a live view needs the exact session URL. All are logged in our friction log
  • A very slow internet connection, which shaped how we cached and replayed data

Accomplishments we're proud of

  • Real Ring snapshots and live video working end to end, with a calm, accessible design (WCAG AA, keyboard-friendly)
  • A pull request to Amazon's official Ring sample app, built from what we learned in the Playground
  • A detailed, reproducible friction log for the Ring and AWS teams

What we learned

Absence is the signal. Caretaking isn't about more alerts; it's about knowing when something that should have happened didn't.

What's next

OAuth account linking for real Ring customers, push/SMS notifications, multi-camera homes, and a native Fire TV version of the visual doorbell.

Built with the help of Claude Code.

Built With

Share this project:

Updates

Submission history