Getting Started @ stwoo.net

Install

Build from source (Go 1.23+):

git clone https://github.com/<you>/gohyde && cd gohyde
make build          # produces ./gohyde
sudo install gohyde /usr/local/bin/gohyde   # optional

Verify the environment:

gohyde doctor
#   Gohyde Doctor
#   ✓ Go 1.23
#   ✓ Dart Sass 1.69.5
#   ✗ Tailwind CSS (not installed)
#   ✓ Python 3.11  ✓ Ruby 3.2

Scaffold a site

gohyde new myblog
cd myblog
npm install          # one-time: installs the Tailwind 4 CLI
gohyde serve          # dev server + live Tailwind at http://localhost:4000

gohyde new writes a full blog theme: Tailwind 4 styling (single
--color-brand-500 variable to rebrand), Alpine.js mobile menu, dark/light
mode
with a no-flash toggle, a post blueprint for the CMS, a sample
Python plugin, and three example posts. gohyde new --blank writes a minimal
_config.yml and empty dirs instead.

Layout produced:

myblog/
├── _config.yml          # site config: collections, blueprints, nav, tailwind
├── _layouts/            # default, home, blog, post, page
├── _includes/           # header (nav + theme toggle), footer, post-card, head
├── _posts/              # dated blog posts: YYYY-MM-DD-title.md
├── _pages/              # standalone pages (about, blog index)
├── _plugins/            # reading_time.py — example Python plugin
├── _data/               # data files (.yml/.json/.csv) → site.data.*
├── assets/css/input.css # Tailwind source (brand color, article styles)
├── package.json         # @tailwindcss/cli dev dependency
├── Makefile             # make build = minified CSS + gohyde build
└── index.md             # home page

Build

gohyde build              # full build → _site/ (default) or _builds/
gohyde build --incremental  # only rebuild changed files (uses .gohyde-cache.json)
gohyde build --watch      # rebuild on file change

Output goes to destination from _config.yml (default _site; some sites use
_builds). Always clean the destination if you suspect stale files:

rm -rf _site && gohyde build

Serve

gohyde serve              # http://localhost:4000, live reload, CMS at /_gohyde
gohyde serve --port 8080 --no-cms

serve always watches the source tree via fsnotify and reloads the browser on
change — the --watch flag is a no-op there (it only matters for build).

Project conventions