All work

Quenga Designs · 2026

Atrium

ProductNext.jsSupabase

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.