---
title: "Family Tree"
url: "https://ridwaanhall.com/projects/family-tree"
markdown: "https://ridwaanhall.com/projects/family-tree.md"
summary: "An invite-only family tree on Cloudflare Workers, with roles, audit history and Google sign-in."
---

# Family Tree

> An invite-only family tree on Cloudflare Workers, with roles, audit history and Google sign-in.

- Category: Web App
- Status: Development In Progress
- Started: September 1, 2026
- Built with: Next.js, React, TypeScript, Drizzle ORM, TailwindCSS, Cloudflare Workers, Cloudflare

## About

### The problem

A family's history lives in memory and scattered photos, and a public genealogy site would expose living relatives.

### The approach

Family Tree runs entirely on Cloudflare's free tier: Workers for hosting through OpenNext, D1 with Drizzle for data, R2 for photos and KV for the cache. There is no sign-up form and no password. People sign in with Google, and only if a superuser has added their address to the allowlist.

- Three roles: family can view and edit their own record, staff can edit anyone, and the superuser manages invitations and accounts.
- Self-editing is limited by a strict schema, so a crafted request cannot restructure the tree around its author.
- Every change writes a field-level diff to an audit log.
- The chart is drawn with d3-hierarchy and d3-zoom as custom SVG.

### The result

Private and invite-only, so there is no public link. The source is private.

## Features

- **Invite-Only Access**: Google sign-in, allowed only for addresses a superuser has added.
- **Roles**: Family, staff and superuser, each with its own limits.
- **Audit History**: A field-level diff for every change.
- **Zoomable Tree**: A d3 hierarchy drawn as custom SVG.

## Tags

Family Tree, cloudflare, Next.js

## Elsewhere

- This page for people: https://ridwaanhall.com/projects/family-tree
- Index of every page as Markdown: [llms.txt](https://ridwaanhall.com/llms.txt)
