BEN://
--:--:-- UTC
BEN://PROJECTS/LOOM-SITE-VISUALIZER

Software

Loom — Real-Time Site Structure Visualizer

A distributed crawler that maps a site into a live, physics-based graph — pages settle into orbit around their hubs as the crawl runs, streamed over Socket.io in real time.

maintained

Started

May 15, 2026

Updated

May 15, 2026

Repository

Private · docs only

Live

—

Next.jsTypeScriptRedisBullMQSocket.ioDockerCoolify
#seo#visualization#real-time#self-hosted

Problem

Sitemaps and crawl reports tell you a site's structure exists; they don't make you feel it. I wanted to watch a site's link graph assemble itself — orphan pages drifting in from a sitemap, hub pages pulling neighbors into orbit — instead of reading a table of URLs.

Architecture

Loom runs as three cooperating services, deliberately kept separate:

The frontend renders the graph with react-force-graph-2d, with physics controls exposed live — repel force, link distance, hub gravity, node sizing by link degree — so high-authority pages visibly grow into planet-sized hubs as the crawl fills in around them.

Interesting decisions

Deployment

Ships as a multi-stage Docker image with separate ui and worker targets, deployed via Coolify — the same self-hosted pattern I use for most of the homelab.

Lessons learned

Keeping the crawl worker and the Socket.io gateway in genuinely separate processes (not just separate files) made the failure modes much easier to reason about — a runaway crawl can be killed without taking the UI down with it, which would not have been true if everything shared one Node process.

← All projects