I think this is the 4th or 5th iteration of my website.
Goals
- Able to write the website in markdown, within [[Obsidian]].
- Being able to push updates simply/automatically from Linux.
- Include auto-generated index pages.
- Alternative links for lots of pages, so they sit at a slash-page (like /intake, /feed, /links, etc)
- Small / lightweight user interface. Ref:
- https://macwright.com/2016/05/03/the-featherweight-website
- https://tinyprojects.dev/posts/tiny_websites_are_great
- SVG for graphics, if needed
- Test with https://pagespeed.web.dev/ and https://www.webpagetest.org/
- A place to host my small apps
Contents
- Home
- Projects
- Including list of ideas for things I haven’t actually done
- Blog
- Individual posts
- Intake
- Shelf
- Nope
- Resume
- Apps (not in the header)
- Perpetual game
- Fermi game
- RSS
- Projects
Plan
Pipeline
Hugo seems to do everything needed, so it will just link directly to an Obsidian subfolder.
Aliases will be handled via Obsidian front-matter:
aliases:
- /intake
- /in
Content probably needs YAML headers also for:
- lastmod (maybe :fileModTime)
- created
Sync can be a script like:
cd (folder)
hugo --minify
rsync -avz --delete public/ myserver:/var/www/jwbatey.com/
Use a list.html template to add an index for each folder (projects, blog, maybe shelf)
Site design
To keep the page load under 15 kb, the templates should have:
- No webfonts.
- Inline/minimal CSS via a stlye tag in the head
- js - probably none needed
Templates:
- shell.html - header, navigation, footer, css, js (if any) - 4kb limit
- content.html - the body of the page - <11 kb goal (~2000 words)
- list.html - for the auto-gen folder indexes
Images - Nope. Inline SVG if needed.
Setup Steps
- Setup hugo
mkdir -p ~/.local/bin
HUGO_VERSION="0.xxx.0" # Lookup latest version manually
wget -qO- "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" \
| tar xz -C ~/.local/bin hugo
hugo version
- Build templates above. Ended up with:
- hugo.toml - Config file. Site setup, menu list, also configs RSS
- baseof.html - base page
- single.html - filters so ‘updated’ date only shows if modified since created
- list.html - every _index.md gets an auto-generated chronological index
- index.html - Shows most recent edits
- Point content/ at Obsidian folder
- setup hugo.toml to generate the RSS
- write a 3-line rsync script for Hugo
- Extra lines to copy app folders as-is
To fix
- md links - does jwbatey need them? If not, filter out the Obsidian style links. Might need a build step.
- Switch the website to a Things style dark color scheme, assuming low enough kb. ✅ 2026-03-11
- Figure out if the triple-single-quote is working because of Firefox themes or what ✅ 2026-03-11 (Working due to Hugo)
- Fix RSS feed to use modifed date if created is blank. Right now it seems to default to 0001-01-01
- Add a copy button (if space allows) to the triple-single-quote ✅ 2026-03-11
- Setup aliases in nginx
location / {
try_files $uri $uri/index.html $uri/ =404;
}