Epoch

A private family history, shared with the people who help keep it.

The history stays with the family that keeps it.

Private
Each family runs its own copy on its own Cloudflare account. Access is by invitation only, and living people stay hidden from anyone without the right.
Shared
Relatives and researchers edit the same tree, each with their own role. Every change is logged and can be undone, and a clashing save is refused rather than overwriting someone else's.
Yours to take
GEDCOM in with a preview, GEDCOM out in 5.5.1 or 7.0, including structures Epoch does not show yet. No platform holds or mines the data.
No server
Built on Cloudflare Workers, D1, R2, Queues and Workflows. There is no machine to patch or keep running.

Families as they were, not as a form expects.

More than one family per child, partnerships that end and begin again, and dates kept exactly as the record gives them. Choose a kind of link to trace it.

A sample family drawn the way Epoch draws itEllen Marsh has two partnerships. With Thomas Reed, married 1898 and divorced 1904: a biological daughter, Rose, born about 1900, and an adopted son, Henry, born 1899. With Arthur Vale, married 1907: a biological son, Jack, born between 1908 and 1910, and a foster daughter, Nell, born 1912. Arthur is Rose's step-father, worked out from Ellen's partnerships.1st · m. 1898 · div. 19042nd · m. 1907Thomas Reed1871 – 1932Ellen MarshABT 1874 – 1951Arthur Vale1869 – 1940Rose ReedABT 1900Henry Reed1899Jack ValeBET 1908 AND 1910Nell Price1912Arthur's step-daughter, worked outfrom Ellen's partnerships
Highlight one kind of link:
  • Ended partnership
A sample family, invented for illustration.

A tree that handles real families

A child can have more than one parental family, and every link says what kind it is.

  • Biological, adoptive, foster, guardian and unknown parentage
  • Partnerships with separation, divorce, annulment, death and remarriage
  • Step relationships worked out from a parent’s partnerships

Ways to see the family

A focus-centred family view kept in the address, so Back and shared links restore it.

  • Pedigree, descendants, fan and hourglass charts, each with a text outline
  • A relationship finder that shows every route between two people
  • Ranked search that says why each person matched

Records and research

Pages for people, partnerships, places and sources, built around the evidence.

  • Sources, repositories and citations, showing what each source supports
  • Shared notes, research tasks and a data-quality report
  • Media attached to people, kept private in your own storage

Editing safely together

Several people can work on one tree without stepping on each other.

  • Owner, manager, editor, contributor and viewer roles per tree
  • Every change shows an Undo, and the change log keeps the rest
  • Two saves to the same record at once: the second is refused, not merged blind

GEDCOM in and out

Bring a tree from other software and take it with you again.

  • Validation and a preview before anything is written
  • Duplicate families in a messy file offered for merging
  • Structures Epoch does not show yet are kept and written back out

Four more ways to see the whole family

Beside the flat family view, four 3D views. Each can show the whole tree and trace several lines at once.

  • 1 of 4Rings

    An overview to turn and explore: one ring for each generation, the youngest at the top and the oldest at the bottom, with lines up to the children.

  • 2 of 4Ball

    A glass ball with the family inside it. Height is the calendar, the oldest at the top; the wider a generation, the nearer its people sit to the glass.

  • 3 of 4Ribbons

    Each person is a ribbon of descent. A couple’s ribbons meet at a glowing knot, and their children’s ribbons branch out from it like a river delta.

  • 4 of 4Orrery

    A star cluster. Partners circle each other as a pair of stars, and their children circle the pair.

Turn them yourself in the demo

Get the code

Epoch is one SvelteKit application, in a single repository on GitHub. Clone it, run it on your own machine with a sample tree, then decide whether to install it.

tdack/epoch on GitHub

Run it locally, with Node 24

git clone https://github.com/tdack/epoch.gitcd epochnpm installcp .dev.vars.example .dev.varsnpm run db:migrate:localnpm run dev

The app opens at localhost:5173, signed in as a local developer. With it running, npm run seed loads a fictional sample tree.

Install it on your own Cloudflare account

One command creates everything Epoch needs, deploys it and checks the result. It signs in through your browser, so there is no API token to make.

  1. Have what it needs

    Node 24, a Cloudflare account on a paid Workers plan, a Zero Trust organisation with an identity provider, and a workers.dev subdomain or a domain on Cloudflare.

  2. See the plan

    Read-only: it shows what would be created or changed, and touches nothing.

    ./setup --plan
  3. Run setup

    Creates the database, storage bucket, queue, Worker, address and sign-in page, deploys, checks the result and records you as the install owner. It asks only what it cannot find out itself.

    ./setup
  4. Invite your family

    Import a GEDCOM file or start a tree, then invite relatives from the tree's Members page, each with their own role.

Looking after an install

./setup doctorReports anything that has drifted from what setup created
./setup allow <email>Lets someone through the sign-in page setup created
npm run deployBuilds, applies any new migrations and deploys a new version
./setup teardownDeletes only what this install created

Setup never creates your account, plan, Zero Trust organisation or domain, and never edits an Access policy it did not create. Every flag is in ./setup --help and the README.

Questions

What does it cost to run?

Epoch runs on your own Cloudflare account, which needs a paid Workers plan. Cloudflare bills you for that directly. There is no Epoch subscription.

Who can see our tree?

Only the people you let in. Cloudflare Access handles sign-in, and Epoch then admits only the install owner, members of a tree and people with an open invitation. Anyone else who signs in is told to ask the owner for an invitation, and nothing is stored about them.

Inside a tree, each person has a role, and living people are hidden from anyone without the right to see them. Tree managers set that per tree.

What is in the demo?

A tree you can browse without signing in. Editing, invitations and GEDCOM import need an install of your own.

Can I bring my tree from other software?

Yes, as a GEDCOM file, which most family-tree programs and sites can export. Epoch validates the file and shows a preview before anything is written, and offers to merge duplicate families it finds.

Anything in the file that Epoch does not show yet is kept, and written back out when you export.

What happens when two of us edit the same person?

The first save wins and the second is refused with an explanation, so nobody’s work is overwritten silently. Every change also shows an Undo, which reverts your own latest change and says why if someone has changed the same records since.

Do I need my own domain?

No. Setup can give you a workers.dev address, or use one custom domain that is already active on your Cloudflare account.

Can I leave, or take the data with me?

Export the whole tree as GEDCOM 5.5.1 or 7.0 at any time. If you stop using Epoch, ./setup teardown deletes only what setup created.

Does it work on a phone?

Record pages, lists and the family view have phone layouts. The 3D views are best on a larger screen.

How is it related to webtrees?

Epoch is inspired by the capabilities of webtrees, not its screens or code. It is a separate application, written for Cloudflare, and exchanges data with other software through GEDCOM.

Is Epoch ready for my family’s records?

Epoch is young and under active development. Known gaps and planned work, such as printable reports, timelines and maps, are listed in the backlog. Export your tree as GEDCOM regularly, whatever software you use.