- 526
- hand-curated sections
- 133
- sets of parallels
- 2
- languages published
- 1
- rule that holds it all together
How it started
It started while watching The Chosen. I wanted a better grasp of what was happening in each episode and kept going back and forth between the gospels. I leaned on the cross-references of R. A. Torrey's Treasury of Scripture Knowledge, which is in the public domain, to build my own cross-reference, but visual, and made it public so anyone can use it.
The problem
The four gospels tell overlapping stories, and the overlaps are the interesting part. Harmonies that map those parallels have existed on paper for centuries, but on paper you cannot follow one thread: you look up a table, find a reference, turn to it, lose your place. The relationships are the content, and a list of verse numbers is a bad way to show relationships.
The approach
The gospels laid out as a graph you can explore: 526 sections and 133 sets of parallels, curated by hand, where clicking a passage shows you what it connects to across the other three. The text is the Reina-Valera 1909, in the public domain.
One rule keeps a hand-made dataset honest
526 sections written by a person will drift: a verse gets skipped, two sections claim the same passage. So the build checks one invariant, that every verse of every gospel belongs to exactly one section, and a gap or an overlap fails the build. That single rule is what makes a hand-curated dataset trustworthy, and it is why the sections are authored in plain text rather than JSON. Nobody can proofread 526 JSON entries. Everybody can proofread a line that reads 1:1-8 followed by a title.
526 nodes and no animation
The graph camera moves instantly, with no easing and no CSS transitions over the nodes. That is not a shortcut, it is the fix. A background tab delivers no animation frames, so a camera driven by requestAnimationFrame simply never arrives when a link opens behind the current tab. And a transition applied across 526 nodes saturates the main thread and freezes mid-flight. Three separate bugs, one root cause.
On screen · tap to enlarge
Try it here
A working miniature of the map: tap a section and its parallels light up in the other gospels.
What's next
The project is still moving. The gospel map is the first diagram; the next ones are already drafted: Kings and prophets, with Israel and Judah on parallel tracks against one timeline and each prophet placed over the reign he spoke in; Paul's missionary journeys, with each letter anchored to where and when it was written; and the visions of Revelation, with seals, trumpets and bowls side by side. And the dataset of references keeps growing.
Stack
- Next.js
- React
- TypeScript
- Tailwind CSS
- React Flow
- Zod