Now on Zoho Catalyst Slate — v4.9.7.2

FamilyRoots

Your family's private digital home — beautifully organised, offline-ready, and powered by AI.

v4.9.7.2 · Catalyst Slate · Released March 3, 2026

31
API Routes
12
DB Tables
4
Role Tiers
4
Deploy Options
AI
Powered
Scroll to explore
🌐 View Live Demo Contact Tony

Deployment Freedom

Deploy anywhere you choose

One codebase. Four deployment targets. Switch between them by changing two environment variables — zero code changes in any route.

☁️
Option A — Vercel + Supabase
Cloud-native serverless. Easiest setup with automatic SSL, global CDN, and Supabase managed auth and database.
🖥️
Option B — Hostinger VPS
Full self-hosted control. Node.js + PM2 + PostgreSQL on your own server. Nginx reverse proxy with Let's Encrypt SSL.
🐳
Option C — DigitalOcean
Containerized Docker deployment on a Droplet. Full control with reproducible builds and easy horizontal scaling.

Platform Features

Everything your family needs

A complete family management platform — from interactive tree visualization to push notifications and AI-powered storytelling.

🌳
Interactive Family Tree
Three view modes: flat grid, hierarchical branch view with Gen I/II/III bands and elbow connectors, and house-unit focused view. Pinch-to-zoom, pan, and click-to-profile on any member. Supports 10,000+ members with viewport culling.
📱
Offline-First PWA
Full Progressive Web App with service worker + IndexedDB. Browse the entire family tree, view profiles, and add members — all without an internet connection. Changes sync automatically when reconnected via bidirectional /api/sync-up and /api/sync-down.
🔐
Role-Based Access Control
Four granular role tiers: admin, mem-admin, house-head, and member. Every API route is server-side guarded. Roles are always resolved from the database — never from client-supplied values. Field-level locking in member forms per role.
📸
Photo Uploads
Cloudinary-powered signed upload flow. Admin member photos stored securely with CDN delivery. The API secret never leaves the server — all uploads route through /api/upload-sign for server-side signature generation.
🔔
Push Notifications
WebPush VAPID notifications via the web-push npm package. Members subscribe from any device. Admins can send targeted or broadcast push alerts for family news, events, and announcements. Works on Android, iOS (16.4+), and desktop.
📄
PDF Reports
Branded, print-quality family reports. Member directory grids with photos, family timeline with all historical events, and cover pages with branch hierarchy. Fully white-labelled — family name and logo pulled from your settings. No external PDF service required.
🎨
White-Label Branding
Every visible string, color, logo, and icon is configurable via environment variables. App name, tagline, primary color, favicon, and support email all read from NEXT_PUBLIC_ config. Deploy as your family's custom app — completely on-brand.
🔄
Adapter Architecture
The core engineering achievement of FamilyRoots. A clean platform-abstraction layer means switching from Supabase to PostgreSQL, or from Vercel to Catalyst Slate, requires changing exactly two environment variables. All 31 API routes use only getDb() and getAuth().
🔗
Relationship Finder
Graph traversal algorithm to find and display the exact relationship path between any two members in the family. "Anu is Thomas's second cousin once removed via the Mathew branch." Shows step-by-step relationship chain.

Latest Updates

What's new in v4.9.7.x

Two significant patches in March 2026 — Catalyst Slate compatibility and a comprehensive production audit.

v4.9.7.1 — Catalyst Slate
Catalyst Slate: Full Compatibility
March 3, 2026
  • Eliminated all @supabase/ssr imports from client-side code — no more runtime crashes on Catalyst Slate
  • New lib/auth/client.ts — adapter-aware auth with zero Supabase dependency
  • New /api/auth/change-password route for JWT mode deployments
  • All hardcoded "FamilyRoots" strings replaced with branding.appName
  • PDF reports now use actual family name from database settings
  • DOB login identifier fix — passes raw digits, not @familyroots.local email
  • Full branding section added to Catalyst .env.template
  • Version badge corrected from v4.5.7.1 to v4.9.7.1
v4.9.1.2 — Production Audit
Critical Production Bug Fixes
March 1, 2026
  • UUID type mismatch fix — branch/house-unit/relationship selection was silently dropping every selection via parseInt() on UUID strings
  • House-head self-edit mode now correctly shows edit banner and field locking
  • "cousin" relationship type removed (not accepted by backend schema) — replaced with "other"
  • mem-admin settings save 403 fixed — requireChangeSettings now includes mem-admin role
  • All 9 generation options now available (was showing only 4 of 9)
  • prefer-not-to-say gender option added (was missing despite being in the type)
  • Error states added to useBranches and useNews hooks (were silently swallowing errors)
  • Death year validation: max changed to current year (not current year + 1)

Powered by Groq AI

AI that understands your family

Set your GROQ_API_KEY once. Every AI feature sends your family's actual data as context — getting answers that are personal, not generic.

💬
Family Assistant
Conversational chat with your family tree. "Who are all the engineers?" "List everyone born in the 1990s." "Which branch has the most members?" Sends the full roster as context for every query.
📊
AI Insights
Automatically surfaces patterns, statistics, and interesting facts about your family. Age distributions, geographic clusters, occupational patterns — discovered and narrated in natural language.
📖
Family Historian
Generates long-form narrative family history using member profiles, relationship data, and family news. Share a living document that tells your family's story across generations.
📝
Obituary Generator
Dignified, personalized obituary text for deceased family members — generated from their stored profile data, relationships, and recorded life events.
AI Profile Enrichment
Suggests AI-generated enrichments for incomplete member profiles — missing dates, suggested biographical notes, and possible relationship completions based on existing family data.

Technical Architecture

Built for production

Next.js 15 App Router with full TypeScript, adapter-pattern database layer, and offline-first PWA. Every API route is force-dynamic with server-side guards.

Layer Technology Notes
Frontend Framework Next.js 15 App Router React Server Components, streaming, force-dynamic API routes
Language TypeScript strict mode Full type coverage: components, hooks, adapters, all API routes
Database (Supabase) Supabase PostgreSQL JSONB document model, RLS, RPC functions
Database (Self-hosted) PostgreSQL 15 + pg Same schema; Neon, Hostinger, or DigitalOcean hosted
Authentication (JWT) Custom JWT + scrypt HttpOnly cookie sessions; roles from fr_users table only
Offline Sync IndexedDB + Service Worker Bidirectional sync; /api/sync-up and /api/sync-down
AI Features Groq API (external) llama3-70b-8192; chat, insights, historian, obituary
Photo Storage Cloudinary (external) Signed upload via /api/upload-sign; API secret server-only
Push Notifications web-push VAPID WebPush standard; Android, iOS 16.4+, desktop
Tree Visualization Custom React canvas Flat, hierarchical branch & house-unit views; viewport culling
New Deployment Target Catalyst Slate + Neon Serverless Next.js; GitHub CI/CD; standard PostgreSQL

Access Control

Fine-grained role system

Four role tiers with precise permissions. Every route enforces roles server-side. Roles are always resolved from the database — never from client-supplied values.

Admin
Super Administrator
Full CRUD on all data. Access to /api/reset-db (requires RESET_SECRET). Can manage all members, branches, house units, settings, and users. Only role with destructive permissions.
Mem-Admin
Member Administrator
Full member CRUD and settings read/write. Read-only on branches and house units. Fixed in v4.9.1.2 — settings saves were previously rejected with 403 due to a permission mismatch.
House-Head
Household Head
Can view all members and edit their own profile and household. Self-edit banner now correctly applied in v4.9.1.2. Relationship slots locked in self-edit mode.
Member
Family Member
Read access to all family data. Can edit only their own profile. Login via date of birth (ddmmyyyy format) with birth year as initial password — changed on first login.

Open Stack

Proven technologies, no surprises

Every dependency is open, portable, and widely supported. No proprietary lock-in in the core application layer.

Next.js 15
React 18
TypeScript
PostgreSQL 15
Neon Serverless
Tailwind CSS
Groq API
Cloudinary
web-push VAPID
IndexedDB Sync
scrypt Auth
JWT Sessions
Supabase (optional)
PM2
Docker
Zoho Catalyst Slate
Node.js 22.x
Nginx

Your family's story
deserves a permanent home

Self-hosted, private, offline-ready, and fully yours. Experience FamilyRoots today with a live demo, or contact Tony to discuss deployment options tailored to your family's needs.

Explore the Live Demo Contact Tony →