Side questFamily organizerOn our living room screen
The family calendar you can text.
A dashboard for the living room screen that runs from the family group chat. Text it “Otis has soccer Tuesday at 4” and it’s on the calendar, in Otis’s colour, with a reminder. Text it a photo of a drawing and it goes up on the fridge, then into a little framed gallery the kids can walk through.
The family on this page is made up. The real one gets to keep their schedule to themselves.
Today, on the big screen. Past events fold away; everything is coloured by who it’s for.
The idea
Every family runs on a fridge door, a shared calendar nobody opens, and a group chat where “what time is soccer?” gets asked four times a week. I wanted one screen in the living room that knew who everything was for, and that you could just text.
- 01
Nobody installs anything.
Everyone already has iMessage. The wall is the screen and the group chat is the keyboard, so the grandparents can add to it without learning a thing.
- 02
Google keeps the records.
Events live in Google Calendar and to-dos in Google Tasks. The dashboard is a better window onto them, and every phone’s calendar app gets the same colours.
- 03
It asks only when it matters.
“Juni gym day Wednesday” names Juni. “My dentist Tuesday” is the sender’s. Only a genuine shrug gets a question back, and never more than two.
The calendar
Five people. One week you can read from the couch.
Every event knows who it’s for. Ones that come in by text are tagged with names, a hidden property, and the matching Google colour. Ones typed into Google by hand get their names read out of the title. Both filter the same way.
-
A rolling seven days
Not Sunday to Saturday. Today is always the first column, and a sideways swipe moves a week.
-
Coloured by who it’s for
One hue per person. A shared event blends theirs, so date night lands somewhere between Ben’s gold and Nora’s pink.
-
Hours that fit the week
The grid stretches to whatever is actually on it, so a 6am practice or a late flight never gets clipped.
Managed over iMessage, with Photon
The group chat is the remote.
The house has its own iMessage number, run by Photon. Text it like you’d text a person and it files things where they belong, then texts back to say so. It texts first, too: reminders before things start, a rundown every morning, and a sweep every evening.
- Today 4:12 PM
- otis has soccer next tuesday at 4 at the Y
- ✓ On the calendar: Otis — Soccer Tue, Oct 13 · 4:00–5:00 PM · the Y I’ll text 30 min before.
- Today 9:03 AM
- dentist thursday 3:30
- Who’s the dentist appointment for?
- bea
- ✓ On the calendar: Bea — Dentist Thu, Oct 8 · 3:30 PM
- Today 6:48 PM
- remind ben to call about the gutters saturday
- ✓ On Ben’s list: Call about the gutters · Sat
- also we’re out of taco shells
- ✓ Added to Shopping: Taco shells
- Today 3:31 PM
- juni made this at school 🐉
- 📌 Pinned to the fridge. It’s waiting for you on the board.
- Mon 7:00 AM
- ☀️ Morning! 58° now, high of 73°, no rain. 📅 Today 9:00 Ben — Client call 4:00 Juni — Piano 5:30 Otis — Swim · the Y 🔭 Next 3 days Tue Juni — Soccer practice Wed Otis — Dentist 3:30 ✅ Due today: Sign field trip form 🧲 2 new on the fridge 🎂 Juni turns 9 in 12 days
- Mon 7:00 PM
- Still open from today: • Take out the trash — try tonight 8:30 PM • Sign field trip form — try tomorrow 7:30 AM (before school) Reply ok to move them.
- ok
- ✓ Moved both. Night!
How one text becomes an event
- iMessage Anyone in the family texts the house’s number.
- Photon Spectrum receives it and fires a signed webhook.
- Worker Checks the signature and the sender. Unknown numbers are ignored.
- Claude Reads it with the family profiles: nicknames, teams, teachers.
- Google + fridge An event, a task, or a pin on the fridge board.
- Receipt A short “✓ Added…” goes back on the same thread.
And every 15 minutes a cron goes the other way: reminders 30 minutes before anything with your name on it, the morning digest at 7, the evening sweep at 7. Replies to the sweep are held for 14 hours, so “ok” still works over breakfast.
The fridge
A fridge door that sorts itself out.
Anything texted or emailed in that isn’t an event or a to-do gets pinned up here: drawings, invitations, coupons, notes. Try it: sort the new ones, or open the dial on the invitation.
Maya turns 8! 🎈
Paint-your-own-mug party at Clay Corner. Juni’s invited! RSVP to Sarah by the 12th.
Sat, Oct 17 · 2:00 PM Sarah · (330) 555-0142Lincoln Elementary: Picture day is Friday
Forms went home Monday. Retakes are Nov 12.
Added to calendar · Fri, Oct 9My Family
Book fair money ($10) goes in Otis’s folder by Friday. It’s on the counter.
Pizza Joe’s
Kids eat free on Tuesdays. Through Oct 31.
Juni’s spelling words, week 6
leaf · leave · their · there · brought · enough · laugh · scarecrow
Juni asked me to send this: “CAN WE PLEASE GET A DOG. I will feed it. I feed Pickles.”
Sort the fridge
3 leftDrag the card, or use the buttons. ← recycle · keep →
-
Swipe to sort
New things wait in a deck. Right to keep, left to recycle.
-
It reads the photo
Snap an invitation and Claude pulls the date, place and RSVP number off it.
-
School emails too
Forward one to the fridge’s address. Dated ones become events on their own.
-
Nothing gets tossed
Recycled things sit in a bin for 30 days. Drawings go to an art box for good.
Kids mode · the art gallery
Every drawing gets a frame.
A grown-up taps a kid’s face in the corner menu and hands the tablet over. Kids mode has three tabs: my tasks, my day, and my gallery, where everything filed to their art box hangs on a plaster wall. Drag the wall. Tap a neighbour. Tap the plaque under the middle one to give it a name.
3 of 5 done today
- 8:00 Soccer game
- 10:30 Pancakes at Grandma’s
- 5:00 Pumpkin patch with Mom
- 6:00 Taco night
Only Juni’s things, and the ones that are everybody’s.
Drag the wall · tap the plaque to rename · hold Juni’s face for two seconds to get out
The rest of the door
Small things a house needs.
Most of these exist because somebody in the house asked “can it…?” at dinner. They all work here, too.
Ask
Questions about your own week, in plain words. Claude gets read-only tools for the calendar, every task list, the message log, the fridge, the weather and the family profiles, and shows which ones it looked at. It can’t change a thing, so the worst a bad answer can be is wrong.
Saturday’s busy: Juni’s soccer game at 9, then raking leaves with Ben and Otis at 11, and Grandpa’s birthday dinner at 5. Looks like 64° and partly cloudy, so the game’s on. Sunday is clear.
Looked atCalendarWeatherRoutines
Any task with “daily” or a day name in its notes becomes a row of stars. Tap one.
Shopping
A Google Tasks list everyone’s phone already has, sorted into the order you walk the shop.
Produce
Dairy & eggs
Pantry
Nothing in the cart yet
TV mode
Family photos from SmugMug, full-bleed on the living room TV or a Raspberry Pi, with the clock, weather and today laid over them. The phone is the remote: scan a code once and pick the albums.
Night
The same warm room with the lights down: clay brown, not charcoal, so the coral and everyone’s colours still belong. This switch dims this page too.
Holidays & fun days
About one day in five gets a little chip by the title. The rule for a “national ___ day” is simple: if there’s no honest icon for it, it doesn’t make the cut.
Sign in by text
At home it just opens. Away from home, tap your name and the house texts you a link with a code in it. No passwords for anyone to forget. Whoever holds a family phone is family.
Sent. Check your messages.
Under the hood
Two files and a phone number.
- June 12first commit
- 79commits, 25 PRs
- 0build steps
- 1very busy house
One Cloudflare Worker
About 4,700 lines of plain JavaScript. It’s the API, the iMessage webhook, the email inbox, the reminder crons, TV mode and the sign-in, and it serves the app too.
One HTML file
The dashboard is React in a single 5,000-line page, compiled in the browser. No build step, so a fix is live a few seconds after I save.
Photon
The house’s iMessage line. Webhooks in, verified by signature; texts out over REST. No extra server to babysit.
Claude
Reads texts, emails and photos, and answers Ask. If it’s ever unreachable, a plain keyword parser takes over and texting never breaks.
Google Calendar + Tasks
The source of truth. Everything the dashboard makes is a normal event or task on everyone’s phone.
D1, R2, KV + Images
The fridge board, message log and profiles in D1; photos in R2, re-encoded to WebP and trimmed on the fly.
What’s next
for iPhone.
The dashboard works because I can run a server for my own house. Focutize is the version anyone could install: a Swift port with no server at all. The smart parts run on the phone, and family data stays on devices and in a folder you own.
“Instructions come down. Family data never goes up.”
In development. Swift, SwiftUI, SwiftData, iOS 26.