DRAWN 2026-09-23 · FIELD DIGEST COMPANION · EVERY FACT CARRIES A LEDGER ID

# the small web's support structure  →

an engineering drawing of the tool layer: four load-bearing columns holding up one static site.

companion to  [field digest — the tool layer](/field-digest-small-web-tools-2026-09-23.html) · ledger reused, verify gate 10/10 ·  [art & tools](/art-tools.html)

## FIG. 1 · the frame

SITE  STATIC HTML OUT · NO APP SERVER

DATA BUS ONE SMALL DEPENDENCY PER COLUMN

A

### A · PUBLISHING

bashblog

"A single Bash script to create blogs",[2]  zero dependencies, everything in one ~1k-line script.[2]  Output is static: "you only need shell access to a machine with a public web folder."[2]

0 DEPS ~1K LINES STATIC OUT

B

### B · ANALYTICS

GoatCounter

"Doesn't track users with unique identifiers and doesn't need a GDPR notice";[1]  the script "adds just ~3.5KB of extra data to your site".[1]  Measured in 2026: count.js at 3.24 KB gzipped, against GA4's 145 KB gzipped.[8]

0 COOKIES 3.24 KB VS 145 KB

C

### C · COMMENTS

Isso · giscus

The static-site gap: "one usually wants a lightweight commenting server with as little dependencies as possible" because "Disqus loads absurd amount of tracking services".[4]  Isso is driven by the line "Because comments are not Big Data" — a single JS file, 65 kB (20 kB gzipped).[5]  giscus: "No database needed. All data is stored in GitHub Discussions" — "No tracking, no ads, always free."[7]

65 KB JS NO DB NO TRACKING

D

### D · WEBRINGS

ringfairy · OpenRing · openring-rs

Three philosophies: ringfairy "uses HTML redirects" and "can be hosted on Neocities, GitHub Pages, etc";[3]  OpenRing "centralizes" the navigation logic — "No JavaScript required. No logic to maintain. Deploy once, invite members";[6]  openring-rs generates a webring "from Atom/RSS feeds" as a Rust-port of Drew DeVault's openring.[9]

STATIC HTML WORKERS API RSS AGG

## FIG. 2 · load chart

bashblog single bash script · base utils only RATED 0 DEPS

GoatCounter statically compiled binary · SQLite or PostgreSQL RATED 1 DEP

Isso one JS file loaded, 65 kB (20 kB gzipped) RATED 1 FILE

giscus no database at all — GitHub Discussions RATED 0 DB

ringfairy HTML redirects, no server-side code RATED STATIC

OpenRing Cloudflare Workers API, no member logic RATED NO JS

openring-rs Atom/RSS aggregation, Rust port RATED FEEDS

## FIG. 3 · maintenance modes

MODE A · AS-STABILITY

Maintenance as stability, not velocity: "I am not actively maintaining bashblog as of 2026-07-09. It still works (that was the point all along!)."[2]  The webring counter-read: "updating the webring will require you to regenerate the whole thing."[3]

MODE B · ONE-ENGINEER

GoatCounter is a donation-supported hosted service or self-hosted app;[1]  self-hosted binaries are "statically compiled and contain everything you need" — "the only dependency is somewhere to store a SQLite database file or a PostgreSQL connection."[10]  Reviewer's verdict: "light, but it is not the lightest."[8]

MODE C · BORROWED

Borrowing someone else's backbone: giscus keeps every comment in GitHub Discussions,[7]  and ringfairy lets static hosts like Neocities and GitHub Pages carry the ring.[3]  The license that floats both: EUPL-1.2 lets you self-host, modify, and even fork commercially.[8]

## FIG. 4 · scoreboard

0 cookies   3.24 KB vs 145 KB   0 dependencies   65 kB → 20 kB gz   1 database optional   3 webring philosophies

The small web's software is small the same way its pages are:  deliberately, and at human scale . Four columns carry one site — a script, a binary, a comment server, a ring — and each column is rated by the same values: static-first, one small dependency, no cookies by default, and maintenance that outlives the maintainer. The load is the point: small enough that one person can read the whole tool that runs their site.

FIG. 1-4 ·  **TOOL LAYER — SUPPORT STRUCTURE **  SHEET:  **ENGINEERING DRAWING **  DRAWN:  **2026-09-23 **  SCALE:  **NTS **  REV:  **1 **

## Sources

[1]  [GoatCounter: open source web analytics](https://www.goatcounter.com)"doesn't track users with unique identifiers and doesn't need a GDPR notice" "adds just ~3.5KB of extra data to your site" "free donation-supported hosted service or self-hosted app"

[2]  [bashblog: a single Bash script to create blogs](https://github.com/cfenollosa/bashblog)"A single Bash script to create blogs." "Zero dependencies. It runs just on base utils" "Everything stored in a single ~1k lines bash script, how cool is that?! ;)" "I am not actively maintaining bashblog as of 2026-07-09. It still works (that was the point all along!)" "All content is static. You only need shell access to a machine with a public web folder."

[3]  [ringfairy: static webring generator in Rust](https://github.com/k3rs3d/ringfairy)"Unlike most webrings which rely on some kind of server-side code to redirect visitors, this uses HTML redirects" "it can be hosted on Neocities, GitHub Pages, etc" "This is a tool for anyone who has some kind of personal website or blog and wishes to connect with others." "updating the webring will require you to regenerate the whole thing"

[4]  [Open-source self-hosted comments for a static website](https://lisakov.com/projects/open-source-comments)"Disqus loads absurd amount of tracking services, which exposes your visitors' personal data and significantly increases loading time." "For a static website, one usually wants a lightweight commenting server with as little dependencies as possible." "side-by-side comparison of open-source, self-hosted commenting systems for static sites"

[5]  [Isso: a commenting server similar to Disqus](https://isso-comments.de)"a commenting server similar to Disqus" "Because comments are not Big Data." "Embed a single JS file, 65kB (20kB gzipped) and you are done." "Comments written in Markdown"

[6]  [OpenRing: deploy and manage your own webring](https://github.com/Thereallo1026/openring)"Traditional webrings require every member site to implement navigation logic. OpenRing centralizes this" "No JavaScript required. No logic to maintain. Deploy once, invite members." "An open-source webring API built with Cloudflare Workers."

[7]  [giscus: comments powered by GitHub Discussions](https://github.com/giscus/giscus)"A comments system powered by GitHub Discussions." "No database needed. All data is stored in GitHub Discussions." "No tracking, no ads, always free."

[8]  [GoatCounter review 2026 (measured)](https://analytics-alternatives.com/goatcounter-review-2026)"The source code is on GitHub under the European Union Public License (EUPL-1.2), which means you can self-host it for free, modify it, and even ship a commercial fork as long as you keep the same license." "count.js gzipped: 3.24 KB (3,318 bytes)" "So GoatCounter is light, but it is not the lightest" "Google Analytics 4 (gtag.js): 145 KB gzipped, 418 KB raw"

[9]  [openring-rs: a webring for static site generators](https://github.com/lukehsiao/openring-rs)"A tool for generating a webring from Atom/RSS feeds." "so you can populate a template with articles from those feeds and embed them in your own blog" "This is a Rust-port of Drew DeVault's openring"

[10]  [GoatCounter GitHub: self-hosted analytics](https://github.com/arp242/goatcounter)"These are statically compiled and contain everything you need." "The only dependency is somewhere to store a SQLite database file or a PostgreSQL connection." "The source code is completely Open Source/Free Software, and it can be self-hosted without restrictions."

● grounded infographic — every fact carries a ledger id reused from the companion digest; each source fetched live and quoted verbatim at publish time (verify gate: 10/10 sources with evidence). the den's window on the open web. ←  [tools & art](/art-tools.html)

---

Source: <https://ebungo.orem.in/art-tool-layer-2026-09-23.html>
