my-family

module
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2026 License: AGPL-3.0

README

My Family

CI codecov Go Report Card Go Version OpenSSF Scorecard

Self-hosted genealogy software written in Go with an embedded Svelte frontend.

Features

A genealogy platform designed for research rigor and data ownership.

  • GEDCOM 5.5 import/export - Full round-trip fidelity with your existing data
  • Flexible date handling - Supports exact, approximate, ranges, and "before/after"
  • Historical calendars - Parses, displays, and round-trips Julian, Hebrew, and French Republican dates, with optional Gregorian conversion for comparison
  • Family relationships - Biological, adopted, step, and foster qualifiers
  • Geographic heat map - Interactive world map showing family locations with zoom/pan
  • Interactive pedigree chart - D3.js visualization with pan/zoom and keyboard navigation
  • Full-text search - Fast fuzzy matching with keyboard-navigable results
  • Keyboard shortcuts - Power user navigation (press ? for help)
  • Accessibility - High contrast, font scaling, screen reader support
  • API-first design - Complete REST API with OpenAPI documentation
  • Event sourcing - Full audit trail of all changes
  • Easy deployment - Single binary or Docker, SQLite or PostgreSQL

See FEATURES.md for the complete list.

Quick Start

Using Docker
# Run with SQLite (default)
docker compose up -d

# Access the application
open http://localhost:8080
Building from Source

Prerequisites:

  • Go 1.26+
  • Node.js 22+
  • SQLite 3.x (for local development)
# Install dependencies
go mod download
cd web && npm install && cd ..

# Build frontend
cd web && npm run build && cd ..

# Build and run
go build -o myfamily ./cmd/myfamily
./myfamily serve

Configuration

Environment variables:

Variable Default Description
DATABASE_URL (none) PostgreSQL connection string (uses PostgreSQL if set)
SQLITE_PATH ./myfamily.db SQLite database path
PORT 8080 HTTP server port
LOG_LEVEL info Logging level (debug, info, warn, error)
LOG_FORMAT text Log format (text, json)

API Endpoints

  • GET /api/v1/persons - List persons
  • POST /api/v1/persons - Create person
  • GET /api/v1/persons/{id} - Get person
  • PUT /api/v1/persons/{id} - Update person
  • DELETE /api/v1/persons/{id} - Delete person
  • GET /api/v1/families - List families
  • POST /api/v1/families - Create family
  • GET /api/v1/families/{id} - Get family
  • PUT /api/v1/families/{id} - Update family
  • DELETE /api/v1/families/{id} - Delete family
  • POST /api/v1/families/{id}/children - Add child to family
  • DELETE /api/v1/families/{id}/children/{personId} - Remove child
  • GET /api/v1/pedigree/{id} - Get pedigree chart data
  • GET /api/v1/map/locations - Get geographic locations for map
  • GET /api/v1/search?q=... - Search persons
  • POST /api/v1/gedcom/import - Import GEDCOM file
  • GET /api/v1/gedcom/export - Export as GEDCOM (optional ?version=5.5|5.5.1|7.0; defaults to 5.5, auto-upgraded to 7.0 when the data uses 7.0-only features). When exporting 7.0 external identifiers (EXID) down to 5.5/5.5.1, a FamilySearch ARK identifier on a person is preserved as the _FSFTID vendor tag; other external IDs have no 5.5.x equivalent and are reported as data loss.
  • GET /api/v1/gedcom/export/preview - Preview an export conversion (optional ?version=); reports data loss without producing a file
  • GET /api/v1/export/tree - Export complete tree as JSON
  • GET /api/v1/export/persons - Export persons as JSON or CSV
  • GET /api/v1/export/families - Export families as JSON or CSV

API documentation: http://localhost:8080/api/v1/docs

Development

# Run tests
go test ./...

# Run frontend tests
cd web && npm test

# Format code
go fmt ./...

# Static analysis
go vet ./...

Documentation

License

AGPL-3.0

Directories

Path Synopsis
cmd
myfamily command
Package main is the entry point for the My Family genealogy application.
Package main is the entry point for the My Family genealogy application.
internal
api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
citation
Package citation provides Evidence Explained citation templates, formatting, and validation for GPS-compliant genealogical citations.
Package citation provides Evidence Explained citation templates, formatting, and validation for GPS-compliant genealogical citations.
command
Package command provides CQRS command handlers for the genealogy application.
Package command provides CQRS command handlers for the genealogy application.
config
Package config provides configuration loading and management.
Package config provides configuration loading and management.
demo
Package demo provides sample data seeding for demo mode.
Package demo provides sample data seeding for demo mode.
domain
Package domain provides the core domain types for the genealogy application.
Package domain provides the core domain types for the genealogy application.
exporter
Package exporter provides data export capabilities for genealogy data.
Package exporter provides data export capabilities for genealogy data.
gedcom
Package gedcom provides GEDCOM file import/export functionality.
Package gedcom provides GEDCOM file import/export functionality.
media
Package media provides media processing utilities for the genealogy application.
Package media provides media processing utilities for the genealogy application.
query
Package query provides CQRS query services for the genealogy application.
Package query provides CQRS query services for the genealogy application.
repository
Package repository provides data access interfaces and implementations.
Package repository provides data access interfaces and implementations.
repository/memory
Package memory provides in-memory implementations of repository interfaces for testing.
Package memory provides in-memory implementations of repository interfaces for testing.
repository/postgres
Package postgres provides PostgreSQL implementations of repository interfaces.
Package postgres provides PostgreSQL implementations of repository interfaces.
repository/sqlite
Package sqlite provides SQLite implementations of repository interfaces.
Package sqlite provides SQLite implementations of repository interfaces.
web
Package web provides embedded static files for the frontend.
Package web provides embedded static files for the frontend.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL