Family
Portal
An office display and a phone app that know where everyone in the family needs to be, and when to leave.
DETAIL A — THE FILM · 1:37
MUSIC: "INDIE ROCK DREAMY" BY ALEX-MORGAN (PIXABAY). EVERY EVENT, SCORE, GRADE AND DRIVE TIME IN THE FILM IS MADE UP.
DETAIL B — SHOWN IN THE PROJECT'S OWN FINISH
- Cloudflare Worker
- Cron Triggers
- D1
- Hono
- React
- Web Push
- Google Routes
- NWS weather
SECTION C–C · SCOPE
Our family runs on nine calendars: club and high school soccer for two kids, a pro team's matches, the school district, trash pickup, a small group and each parent's own. The answer to "where does everyone need to be today, and when do we leave?" was spread across all of them.
Family Portal pulls them into one place. A monitor in the office shows the day on a timeline over a painted neighbourhood that changes with the time and the forecast, with rain, dusk and the real stars at night. Up next takes over with a countdown when it's nearly time to go. The phone app has the same day, the week ahead, directions, and chores you can tick off.
The useful part is what it notices. A practice that moves from 6:00 to 6:30 flashes on the display and pushes to the driver's phone. School days off, early releases and trash night become heads-ups, and so do two kids who need to be in two places at once. A morning summary lists the day's leave times and any chores that are due.
Calendar links work like passwords, so links added in the app are sealed with AES-GCM and never shown again. The home address and the kids' school data stay out of git and off anything public. That's also why the film above was shot against made-up data.
DESIGN DECISIONS
ONE WORKER, TOP TO BOTTOM
The app, the API, the calendar sync, drive times, weather, school and web push all run in one Cloudflare Worker with one D1 database. Merging to main is the deploy.
LEAVE-BY, NOT START TIME
Up next counts down to when you need to walk out the door. That's the drive with traffic plus time to arrive early, set per calendar. Lookups get more frequent as the event gets closer.
CHANGES ARE THE PRODUCT
Each sync compares the feed with what's stored and logs anything added, moved or cancelled. The display flags the change for 15 minutes, and a push goes to whoever it affects.
GOING OR WATCHING
An away match is watched from the couch, so it gets a kickoff reminder instead of a drive time, a leave alert and venue weather. The family can switch any home game to watching.
LOUD WHEN IT'S STALE
A calendar that stops updating shows on the display, not just a status page. If most of a feed's events vanish at once, the sync keeps them and reports a failure instead of quietly emptying the week.
EVERY HOT QUERY USES AN INDEX
One missing index once read five million rows in a day. Now a test suite runs the Worker's real queries against a local D1 and fails on any table scan of events.