my-family

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2025 License: AGPL-3.0

README

My Family

CI codecov Go Report Card Go Version

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"
  • Family relationships - Biological, adopted, step, and foster qualifiers
  • Interactive pedigree chart - D3.js visualization with pan/zoom navigation
  • Full-text search - Fast fuzzy matching across your tree
  • 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.22+
  • Node.js 20+
  • 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/search?q=... - Search persons
  • POST /api/v1/gedcom/import - Import GEDCOM file
  • GET /api/v1/gedcom/export - Export as GEDCOM

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 ./...

Contributing

See CONTRIBUTING.md for the feature development workflow and code standards.

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 the HTTP API server for the genealogy application.
Package api provides the HTTP API server for the genealogy application.
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.
domain
Package domain contains the core domain types for the genealogy application.
Package domain contains the core domain types for the genealogy application.
gedcom
Package gedcom provides GEDCOM file import/export functionality.
Package gedcom provides GEDCOM file import/export functionality.
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