Wurzelwerk

The board for families & clans.

Wurzelwerk · n. root network

Every family is a root network.

Wurzelwerk is a fast, local-first desktop board for families and clans. Place people, gather them into clans and draw the lines between them – the board keeps it tidy, even with ten thousand people on it.

Features

Draw a family the way you think about it.

An infinite board

Pan and zoom freely. People are cards with an accent bar in their clan's colour; zoom out and they turn into coloured blocks and finally a density map.

Clans as hulls

Clans wrap their members in a coloured hull. A person can belong to several clans – the hulls simply overlap.

Lines that route themselves

Name a line and it picks its style: married is plain, parents of is an arrow, godfather of is dashed. Routes are orthogonal, avoid cards and stay out of each other's way.

One-click auto-layout

Partners side by side, children in the next generation, as few crossings as possible and clan groups packed into a compact board.

Notes & files

Every person and clan has Markdown notes. Drop documents and photos on a person – they are copied into the workspace next to the database.

Yours, on your disk

A workspace is just a folder with an embedded database. No account, no cloud. English and German UI, light and dark appearance.

The board

Clans overlap. Lines find their way.

Mia belongs to both the Weber and the Brandt clan, so the two hulls simply overlap around her. Every line is named, styled by its meaning and routed around the cards.

WeberBrandtmarriedparents ofparents ofmarriedgodmother ofAnna Weber1931 – 2012Karl Weber1928 – 2004Lena Weber* 1958Jonas Weber* 1961Otto Brandt1932 – 2019Ida Brandt* 1935Marta Brandt* 1960Mia Weber* 1990

Under the hood

Rust, a GPU canvas and an embedded database.

Built on iced with a wgpu renderer and an embedded RedDB document store. It is written for large boards from the start.

10 000people on one board, still smooth

GPU-cached static layer, spatial-grid culling, batched paths and level of detail.

A*orthogonal line router

Searches the sparse visibility grid of the cards with a bend penalty, then nudges parallel segments apart.

Sugiyamalayered auto-layout

Barycentre sweeps with exact crossing counts and quadratic coordinate assignment per row.

0 msUI time spent saving

Every write goes to an embedded RedDB on a worker thread, checkpointed when the queue drains.

Hands on the keyboard

  • VSelect
  • GClan tool
  • PPerson tool
  • CConnect
  • FFit board
  • Ctrl+FSearch
  • Ctrl+BSidebar
  • DelDelete selection

Plant your family tree.

Free and open source. Pick your platform from the latest release.

Or build it yourself: cargo run --release