Personal blog for www.frobiovox.com, built with Hugo and hosted on AWS S3 behind Cloudflare.
content/posts/ # Blog posts (markdown)
hugo/ # Hugo site (config, layouts, theme)
task serve # Start dev server at http://localhost:1313
task serve:drafts # Include draft posts
task build # Build to hugo/public/
task build:prod # Build minified for productionPosts live in content/posts/. The source of truth for editing is _posts/ and _drafts/ (legacy Jekyll files). To sync changes to Hugo:
task copy # Normalize and copy from _posts/_drafts into content/posts/
task copy:dry # Preview what would change without writingThe normalize tool cleans up front matter for Hugo compatibility: standardizes key order, merges category into tags, drops Jekyll-specific fields (layout, published), and sets the slug from the filename.
/feed.xml— primary RSS feed/rss.xml— alternate RSS feed/drupal.xml— RSS feed filtered toquarzack13tag
The theme is frobiovox-theme, vendored via vendors.toml at hugo/themes/frobiovox-theme.
To redirect legacy .html URLs from the old Jekyll site to Hugo's trailing-slash URLs, add a redirect rule in the Cloudflare dashboard for the frobiovox.com zone:
- Rules → Redirect Rules → Create rule
- Wildcard pattern:
www.frobiovox.com/*.html - Dynamic redirect expression:
concat("https://www.frobiovox.com/", wildcard_replace(http.request.uri.path, "/*.html", "${1}"), "/") - Status code:
301