Drop this anywhere in your HTML. The widget auto-detects your site from window.location.origin, or you can pass it explicitly via ?site=.
Use data-* attributes on the script tag to configure the widget without touching the URL.
Load the script with data-noauto and call WebRing.init() yourself for full control.
Render into an existing element in your layout using data-target (any CSS selector) or by pre-creating a #webring-widget div.
The widget is styled entirely through CSS custom properties. Override any variable on #webring-widget in your own stylesheet — no build step, no config file, no API needed.
| Variable | Default (dark) | Default (light) | Controls |
|---|---|---|---|
--wr-bg |
#111 | #f8f8f5 | Background fill |
--wr-text |
#e0e0e0 | #1a1a1a | Primary text color |
--wr-muted |
#666 | #999 | Label, counter text |
--wr-accent |
#c8f542 | #1a6b1a | Link / nav arrow color |
--wr-border |
#2a2a2a | #ddd | Container border, separator |
--wr-radius |
8px | 8px | Corner rounding |
--wr-font |
'DM Mono', 'Courier New', monospace | Widget typeface | |
--wr-font-size |
12px | Base font size | |
All sites are configured in a single .env file. No database, no admin UI, no restarts needed — just edit and redeploy. The WEBRING_SITES value is a comma-separated list of URL:Display Name pairs.
# .env — Add or remove sites freely. Minimum 2 required. PORT=3000 # Format: https://site.com:Display Name,https://other.com:Other Name # Name is optional — falls back to hostname if omitted. WEBRING_SITES="https://alice.example.com:Alice's Corner,\ https://bob.example.com:Bob's Workshop,\ https://carol.example.com:Carol's Studio,\ https://dave.example.com:Dave's Notes"