Nisarg GurjarEmail me
PRIVATE · FAMILY

Our Hub. One calm dashboard for a busy household.

Status
Live — private, family-only
Type
Personal
Stack
Supabase (Postgres · magic-link auth · Realtime) · Edge Functions
Scale
11 tables · multi-provider calendar ingestion
Year
2026
RLS-private by designprivacy enforced by the database, not the UI
Our Hub's warm, minimal home board — two household member cards on a cream background
The home board — deliberately calm. (Demo names; the real thing stays private.)
The problem

Two people, two calendar ecosystems, shared lists scattered across apps, and a dog whose care schedule lived in memory. The goal: one glanceable page for the household — without handing family data to another aggregator startup.

What I shipped
  • Merged calendars — a server-side function ingests each person’s private calendar feeds, expands recurring events, and refreshes on a schedule; phones just read the cache.
  • Shared and private lists — with privacy enforced by row-level security in the database, proven from a second account, not just hidden in the UI.
  • Realtime sync — a change on one phone appears on the other without refreshing.
  • Magic-link sign-in and an auto-pairing household capped at exactly two members at the database level.
How it works
Server ingests, phones glance
  1. 1Edge function fetches private calendar feeds server-side
  2. 2Recurring events expanded into a cache table, refreshed on schedule
  3. 3Row-level security decides who sees what — per row
  4. 4Realtime pushes changes to both phones
The hard part
Recurring-event expansion and honest privacy. Calendar feeds disagree about recurrence in creative ways, so expansion happens server-side once, correctly, instead of on every phone. And “private list” means the database refuses the query from the wrong account — verified by actually trying from a second login.
Proof
  • Selftest scripts run the core flows offline against a mock backend.
  • RLS verified from a second account — the failure case, tested.
  • In daily household use.
Today · 3 events mergedSYNCED
Groceries · shared listREALTIME
Dog care · walk logged
Where it stands

Live and in daily use by the household. It stays private — this case study is the tour.

I designed the schema and the row-level security policies that keep private lists private. Claude Code built the stack on top of them. How I work →

Want something like this built?

I take on projects where shipping something real — tested, verified, in production — is the whole point.

Email me