Skip to content

Repository files navigation

Build and deploy

My personal website built with Hugo (extended, pinned to 0.164.0 - see .github/actions/setup-hugo/action.yml and .devcontainer/devcontainer.json).

Presentation lives in its own theme, themes/constructivist/ (see its README), wired in via theme = 'constructivist' in hugo.toml. content/, data/, and archetypes/ stay at the repo root and are theme-agnostic; trying a different look later means adding a sibling theme directory and changing that one config line, without touching content. themes/typewriter/ is the prior theme, kept in the repo as a fallback and reference implementation rather than deleted.

CI: pull requests build the site, validate internal links, and check formatting (.github/workflows/ci.yml); merges to main build and deploy to GitHub Pages (build-and-deploy.yml); a weekly job checks external links online and files an issue on rot (link-check.yml).

Develop

hugo server -D        # live preview with drafts at http://localhost:1313
npm run format        # format templates with Prettier
npm run check-links   # build and validate links with lychee

HTML templates are formatted with Prettier via prettier-plugin-go-template. Two caveats:

  • Keep Go template comments ({{ /* ... */ }}) on a single line: the plugin splits multiline comments across lines, which breaks Hugo's template parser.
  • Each theme's layouts/rss.xml is hand-formatted and untouched by the *.html glob above: the plugin parses input as HTML, where <link> is a void element, so RSS's <link>...</link> container breaks its parser. The template uses {{- -}} whitespace-trim markers around text content, so indentation never leaks into the feed.

About

Personal website built with Hugo, GitHub Actions and GitHub Pages

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages