Supabase backend
New project, migrations, seed invite, RLS, triggers, and RPCs for setup, settings, tablet pairing, and dashboard snapshots.
FamilySync setup documentation
This portal captures the current FamilySync setup system: product intent, onboarding, Supabase schema/RPCs, the Vite phone companion, Android tablet pairing, admin settings, verification commands, and the next implementation decisions.
Current snapshot
The foundation is built across Supabase, the web companion, and Android. The setup loop is ready for local testing end to end.
New project, migrations, seed invite, RLS, triggers, and RPCs for setup, settings, tablet pairing, and dashboard snapshots.
Vite app handles invite code validation, magic-link auth, family setup, admin settings, and tablet pairing.
Native app generates pairing codes, polls for claim status, persists device credentials, and boots into a live dashboard.
Product model
The wall tablet should feel permanent, glanceable, and calm. The phone/web companion is where the family manages setup and settings.
Create the account, redeem an invite, create the family, add people, configure modules, tune Nova, invite a co-owner, and pair one or more tablets.
The tablet shows a 6 character pairing code, waits for the phone to claim it, stores device credentials, and then renders the kitchen display.
Onboarding
FamilySync setup starts on the phone, creates the family structure, then pairs the Android wall tablet with a short-lived code.
User enters the invite code, submits email, and signs in with a Supabase magic link.
User names the family, chooses a color, adds people, selects modules, and configures Nova.
Android shows a 6 character code. The phone claims it and names the tablet, such as Kitchen.
The tablet receives a device token, fetches its dashboard snapshot, and skips pairing on future launches.
The bootstrap development invite is BETA-2026. Treat it as a development code
and rotate or disable it before a public beta.
The web wizard calls create_family_setup, which redeems the invite, creates the
family, owner membership, people rows, and module rows.
Android calls create_device_pairing_code. Codes are 6 characters and expire
after 15 minutes.
Web calls claim_device_pairing_code. Supabase creates a device, marks the pairing
code claimed, and binds the tablet to the family.
The tablet polls get_device_pairing_status, receives a device access token only
when the install id matches, saves it locally, and then calls get_device_dashboard.
Architecture
Web/Vite mobile-web app, auth, setup wizard, admin settings, setup API wrapper, and product settings.
Android/Native Compose tablet app, Supabase REST RPC client, pairing flow, and live dashboard shell.
supabase/Project config, seed data, migrations, schema, RLS policies, and setup/device RPCs.
FamilySync/
Android/
Web/
public/docs/
docs/
supabase/
HANDOFF.md
README.md
Supabase
The linked Supabase project is familysync, project ref
ainhmddplbuwfhnirzkh, region us-east-1.
profiles, invite_codes, invite_redemptions,
families, family_memberships, family_people,
module_catalog, family_modules, co_owner_invites,
devices, and device_pairing_codes.
validate_invite_code, create_family_setup,
update_family_settings, create_device_pairing_code,
get_device_pairing_status, claim_device_pairing_code,
get_device_dashboard, and create_co_owner_invite.
npx supabase@latest migration list
npx supabase@latest db lint --linked
npx supabase@latest db push
Web companion
The phone companion is currently a Vite app and is the source of truth for family setup and settings.
Landing, invite/auth, check email, welcome, family name, members, modules, Nova setup, pair tablet, connected confirmation, live overview, and admin settings.
Family name/color, people, dashboard modules, Nova preferences, co-owner invite records, paired tablets, and pair-another-tablet.
cd Web
npm install
npm run dev -- --host 0.0.0.0
npm run lint
npm run build
Android tablet
Android is native and downloadable. It is not intended to be the full admin surface.
Generates a Supabase pairing code, shows it on the tablet, and polls every 3 seconds.
Saves a local install id and paired device access token so future launches skip pairing.
Fetches family, people, modules, device name, Nova settings, and renders a live display shell.
cd Android
./gradlew assembleDebug testDebugUnitTest
Settings ownership
Family name, accent color, people, roles, ages, modules, Nova name, Nova tone, kid-safe mode, co-owner invite records, and tablet pairing.
Nothing administrative yet. The tablet can generate a pairing code, connect, restore its paired session, and render the dashboard state.
Verification
cd Web
npm run lint
npm run build
cd ../Android
./gradlew assembleDebug testDebugUnitTest
cd ..
npx supabase@latest migration list
npx supabase@latest db lint --linked
Invite validation, pairing code creation, and pairing status polling have been tested through REST RPC calls.
With Vite running, this portal is available at http://localhost:5173/docs/.
Next steps
Complete web setup, launch Android, claim its code, restart Android, and confirm it opens the live dashboard.
Calendar is the natural first module because it matches the wall display target and validates recurring daily use.
Admins should be able to rename, remove, revoke, and eventually rotate credentials for paired tablets.
Configure production domain, redirects, SMTP, invite lifecycle rules, and public beta code policies.