👪 Plots family trees using Go, Graphviz and LaTex
A family tree plotter with a very simple syntax. It probably doesn't cover everything bigger tools do, but covers 90% of it for the sake of simplicity.
A family tree is a YAML file. To get started, store the following text in a file called family.yaml:
families:
- parents: [Marge, Homer]
children: [Bart, Lisa, Maggie]
- parents: [Lisa, Milhouse]
children: [Zia]
people:
Marge:
fullname: Marjorie Bouvier SimpsonBuild the project and then run the CLI application to transform a YAML file into a Graphviz DOT file or SVG:
go mod tidy
go build -o kingraph ./cmd/kingraph
./kingraph -y ./examples/simpsons.yaml -f svg > out.svgSpoiler alerts, view at your own risk :)
For further reading:
Render DOT:
./kingraph -y ./examples/simpsons.yaml -f dot > out.dotRender SVG (requires dot):
./kingraph -y ./examples/simpsons.yaml -f svg > out.svgLaTeX fan chart:
./kingraph latexFanChart -y ./examples/simpsons.yaml --ancestorLeaf Homer --generations 4Transform to GEDCOM:
./kingraph transform -y ./examples/simpsons.yaml -f gedcom > out.gedStatistics:
./kingraph stats -y ./examples/simpsons.yamlEnsure you have go 1.26+ installed and run the following commands:
go mod tidy
go build -o kingraph ./cmd/kingraphTo execute tests and coverage run the following command:
go test ./...To format the code run the following command:
go fmt ./...To run the linter on the code run the following command:
go vet ./...Authored and initially maintained by Rico Sta. Cruz in 2016 with help from contributors.
Forked in 2022 by vorburger.
Forked in 2024 by alxflam, initially modernized and migrated to TypeScript, afterwards migrated to Go in 2026.