Quenga Designs · 2026
Atrium
A self-owned family hub — shared calendar, chores, meal planning, and an always-on wall display, with no subscriptions and no feature gates.
- 8
- Supabase migrations, RLS on every table
- Next.js 16
- React 19, TypeScript strict, Tailwind v4
- One free account
- No billing code, ever
- Problem
- Family-hub apps in the Skylight category gate real features — a shared calendar, chores, meal planning, a wall display — behind a subscription. I wanted the functional category done right, fully self-owned, with nothing metered.
- Solution
- I built Atrium on Next.js 16 and Supabase: household-scoped row-level security throughout, a Netflix-style kid-profile picker with no login required, an always-on wall display mode, and an AI-assisted import center for migrating off other family apps.
- Result
- Live in production, in daily use as a household's actual calendar and chore tracker — not a demo.
The brief
Family-command-center apps (Skylight and its category-mates) do the job well, but the model is subscription-gated: real features sit behind a paywall, and the hardware is proprietary. The brief, self-assigned, was to build the same functional category — shared calendar, chores with rewards, meal planning, an always-on wall display — fully self-owned, running on whatever tablet or spare monitor is already in the house.
What was built
A household holds everything: a shared calendar with recurring events, a chores system with star rewards, realtime shared lists, meal planning, kid routines, and a photo library. Kids are profiles, not accounts — selected Netflix-style on a family device, with every write still running under an adult's session and household-scoped policy. /display turns any tablet or spare monitor into a wall display: clock, today's agenda, per-kid chore progress, tonight's dinner, weather, and a photo screensaver after idle, dimming to a near-black clock during configured sleep hours.
An AI-assisted import center (/import) handles the actual hard part of switching family apps: paste text or screenshot your old app's chores/routines/lists/meals, and the AI proposes structured entries — nothing saves until a parent reviews and accepts. Calendars come in via one-time .ics upload or an ongoing synced feed from Google/Apple/Outlook.
Under the hood
Next.js 16 App Router, React 19, TypeScript strict, Tailwind v4, shadcn/ui. Supabase provides auth, Postgres, Storage, and Realtime — all atrium_-prefixed in a shared multi-app project, with row-level security on every table and membership checks routed through SECURITY DEFINER helpers (atrium_is_member, atrium_is_parent) rather than ad hoc policy logic. Recurring events are stored UTC and expanded through household-timezone-aware RRULE handling, so a 7 AM weekly event stays 7 AM across a DST change — a case covered directly in the test suite alongside ICS parsing and the star-reward economy. A daily Vercel cron keeps connected calendar feeds in sync.
Where it stands
Live and in daily household use — the wall display running on a spare tablet, the calendar and chores handling real recurring life. Built rename-ready (every brand string lives in one config file) in case the shape of it is worth offering to more than one household down the line.