Add First Century Church Directory section#142
Merged
Conversation
Adds a new map-based section: an interactive Mediterranean map with a pin per first-century church. Clicking a church opens a force-directed "web" of the people, households, and communities named there in the New Testament; people who traveled between churches appear as shared nodes bridging multiple church nodes. Paul's four missionary journeys are a toggleable map overlay, and a "whole web" view shows every person and church at once. Backed by new FCC_ Supabase tables (regions, churches, people, households, the person-church membership join, scripture references, journeys, journey stops, journey people) with public-read RLS and admin-write policies, seeded with a full New Testament compilation. Scripture references are stored as reference strings only and fetched at display time via the existing NET Bible API service. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
Clicking a church now renders its people/household web as a geo-anchored canvas overlay: the church sits at its real coordinates, people fan around it, and travelers' threads stretch across the map to the other churches they belong to. The web pans and zooms with the map via a d3-force simulation in screen space. Replaces the side panel — church/person/household details now appear in a compact floating card on node click, with a hover tooltip on the web. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
Travelers were being dragged across the map by the link force toward every church they belong to, tangling the web. Links to other churches now carry zero force — members orbit the focused church while their connections still render as faint dashed threads reaching outward. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
- De-duplicate the two Romans 16 group households (Aristobulus, Narcissus): the pseudo-person row is dropped so each shows as a single household node. - Distinguish members from visitors by is_primary rather than raw church count — people whose home church is elsewhere orbit in a wide outer ring, while members with outside connections (Priscilla, Luke) stay in close. - Replace the dashed bridge lines with gentle curved threads that fade from the person outward toward the far church. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
The curve bow and fade gradient were scaled to the full person-to-church distance, but the far church is usually off-screen when zoomed in on a city — so the visible portion was all straight and full-opacity. Anchor the curve and fade to a fixed screen distance from the person instead. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
…d arcs - Clicking a city now flies to and centers on that city (was using fitBounds with bridge churches, which centred far off the clicked one). - Person/household names render under every dot in the focused web, positioned radially outward from the focused church; the floating tooltip replaces the dot's label on hover. - Clicking a person pins their bridges at full opacity and lights their connected cities; the highlight persists until another node is clicked or the detail card is closed (empty-map click closes the card without clearing the focused web). - Orbit radii scale with the map zoom (more gently than the map itself, clamped so dots are always individually visible and the cloud never exceeds ~42% of the viewport). - Bridge threads bow away from the focused church instead of curving consistently one way, so they radiate outward like spokes rather than crossing through the orbit cluster. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
- Bridge gradient now runs along the forward direction for a fixed screen distance, not s→t along the full chord. The chord-direction gradient meant the curve's bow apex landed deep in the faded zone (because the back-shifted control point puts the apex behind the chord midpoint), hiding the arc entirely. Bumped default head opacity to 0.7 and bow radius so the curve reads clearly. - Push fresh radii into d3-force's link-distance cache on every map move/zoom — d3 only re-reads distances when .distance(fn) is called, so orbits weren't actually expanding when zooming. - Normalise every "House church of …" / "House of …" name to "Household of …" via a single helper, and replace the standalone "House church" tooltip/subtitle/role labels with "Household". https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
Bridge threads: draw a straight radial spoke from each person out past the outer (visitor) ring before starting the quadratic arc. Because no dot in the cluster sits further from the focus than the outermost ring, the spoke is guaranteed to clear every dot. The arc's control point is placed even further along the radial direction, so the curve continues bowing outward before sweeping toward the target church. Orbit shape: each member/visitor link gets a stable per-person distance multiplier (0.7-1.4x base), so dots scatter across a wide band instead of landing on a single ferris-wheel ring. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
Replace the radial-spoke + radial-control geometry with a single quadratic whose control point sits at the angular midpoint between person and target (short way around the focused church), well outside the outer ring. Same- side targets still read as spoke-then-bend; opposite-side targets (e.g. Paul placed NW of Rome with all his connections east) now sweep wide around the cluster instead of spearing through it. Lower default thread opacity (0.7 -> 0.35) and stroke width so the dots read as the headline and threads as gentle connective tissue. Hover still brightens, just less aggressively. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
Bridge connections only render when the active (hovered or click-pinned) node is involved — the default view stays clean and the dots are the headline. As soon as you investigate a person their threads sweep out. Stop dimming non-neighbor people, households, and bridge churches when something is active. The cluster keeps its full presence; the active spoke highlights amber for feedback. Bumped bridge head opacity to 0.8 since it no longer has to compete with a faint default-state layer. https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a new map-based section: an interactive Mediterranean map with a pin
per first-century church. Clicking a church opens a force-directed "web"
of the people, households, and communities named there in the New
Testament; people who traveled between churches appear as shared nodes
bridging multiple church nodes. Paul's four missionary journeys are a
toggleable map overlay, and a "whole web" view shows every person and
church at once.
Backed by new FCC_ Supabase tables (regions, churches, people,
households, the person-church membership join, scripture references,
journeys, journey stops, journey people) with public-read RLS and
admin-write policies, seeded with a full New Testament compilation.
Scripture references are stored as reference strings only and fetched at
display time via the existing NET Bible API service.
https://claude.ai/code/session_01UAprapGPfvroCH5cQL4TRw