
Static Social Sites
Web 2.0 technology gives us lots of wonderful things like blog comments, social media, and wikis, but it's a lot of work for a normal person to self-host. That's why most of the web is on servers run by five big tech companies. A few techie people still run our own static websites and collaborate with older technologies like git and IRC, but this leaves out 99.9% of web users. Here's a pattern to bring the rest of our friends to the static site party!
Metaphor
Imagine a sandbox or chalkboard out in public that anyone can write messages on. Then a camera automatically takes snapshots of the sandbox, and the photos drop into a locked box with the latest picture always falling on top. A curator selects the latest picture that follows the community rules and puts it in a glass display case.
Anyone can add their message to the sandbox, and anyone can view the photo in the display case. The camera, photos in the locked box, and inside the display case are only accessible by the curators.
Web 2.0 Sandbox
This is where anyone can edit the page without a login. The simplest thing to use is a collaborative document editor such as Hedgedoc, CodeMD, Etherpad, or even Google Docs if you must. More advanced sites could be made with tools like Tiddlywiki or Featherwiki. At the extreme end, this becomes a Headless CMS. They require logins and databases, so they don't meet the goal of being simple to self-host. An API for exporting markdown or other static text allows more flexibility in the presentation, but the Snapshot Service could include a web scraper for any web page.
Somewhere on the page, put an "Edit" link that links back to the collaborative document editor, so the static version of the page will appear editable. The sandbox doesn't need a custom domain, since people won't need to remember it or type it.
Snapshot Service
This service runs periodically; I chose once a day. It exports the sandbox and checks any changes into a git repository and creates a pull request. I wrote a simple shell script that is run by a systemd service running on a system without a public IP. This could be done with your favorite programming language on your favorite serverless action function platform framework.
Git Repository
This can be any git repository you please. Github, Gitlab, Codeberg, Sourcehut, or plain-old git on over SSH.
Static Site Host / CDN
Again, choose your favorite hosted or self-hosted web server or a CDN if you want to get fancy. Set your custom domain name to this.
Conclusion
All the components are generic and easily swappable. As long as you keep control of your domain registration, you can point it to a new static site host. If you don't like your git repository's new policy, switch to a different one. Getting too much spam in the sandbox? Start a new document with a different URL from a snapshot of the old one.