A browser-first static website for managing and visualizing family trees. Core family data stays in the browser, with optional map features that call OpenStreetMap services when you open the map view or geocode missing coordinates.
- Multiple families — create, import, export, and delete separate datasets
- List view with full-text search across names and descriptions
- Tree view rendered with D3 in three modes: descendants, inverted ancestors, and force layout
- Map view for places attached to people, with clustering and cached geocoding
- Person editing for names, dates, notes, photos, parents, partnerships, and places
- JSON and ZIP import/export for portable backups, including uploaded photos
- Local photo storage in IndexedDB
- Sample family preloaded on first run
- Family data, selected family state, and geocode cache are stored in
localStorage - Uploaded photos are stored in
IndexedDB - The sample dataset is fetched from
data/sample-family.jsonon first run - The map view loads OpenStreetMap tiles and geocodes place names through Nominatim when coordinates are missing
- Co-located birth-place markers are auto-expanded by default when a cluster has 8 or fewer people
npm ci
npm run build
npx serve .
# or
python3 -m http.server 8080npm run build vendors browser dependencies into js/vendor/.
The repository includes a GitHub Pages workflow that runs:
npm ci
npm run buildbefore publishing the site.
If you deploy manually, run the same commands first and publish the repository root.
- Architecture: docs/architecture.adoc
- Export schema: data/family-tree.schema.json