./blog.sh — a minimalist blogging system
./blog.sh is a blog engine you run from a terminal. Posts are files, the site is a build, and the comments live on the Fediverse — there is no database anywhere in that sentence.
Three things make it different from the other five hundred static site generators:
- No database. One post is one JSON file. Backup is
tar, history isgit, leaving is aforloop. - No dependencies. Ruby stdlib and bash. No gems, no npm, no lockfile. Clone and run.
- No comment system. Every post is announced on Mastodon or Bluesky; replies to that announcement are the comments, loaded by your browser from the public API.
This is what it looks like:


Try it in four lines:
git clone https://github.com/DanielSnor/blog.sh.git
cd blog.sh && cp config/site.yml.example config/site.yml
./blog.sh add
./blog.sh preview
Everything else on this site is a chapter, not a feature list: authoring · markdown · deploy · comments · appearance · migration · i18n · philosophy. The reference manual is the README, and the whole Markdown dialect fits on one page — generated by the parser itself, so it can't lie.
MIT licensed. Source, issues and the occasional opinion: github.com/DanielSnor/blog.sh
