Reference doc covering everything set up so far: what exists, how it works, and what’s still in progress. Written 2026-08-04.
1. What this is
A Hugo-based static site tracking your homelab/hardware projects — status, scope, deliverables, and a running log per project. Source of truth is Markdown files in a GitHub repo; the live site rebuilds automatically on every push.
- Repo:
https://github.com/Lilneenja/bench-log - Live site:
https://coilltean.net - Local folder (on your Windows machine): wherever you unzipped/cloned
bench-log
2. How it’s built (architecture)
- Static site generator: Hugo — reads Markdown files with YAML frontmatter, generates HTML
- Content: one
.mdfile per project incontent/projects/ - Theme: custom, not a downloaded theme — layouts live in
layouts/, styling instatic/css/style.css - Hosting: GitHub Pages
- Deploy: GitHub Actions — every
git pushtomaintriggers.github/workflows/hugo.yml, which builds the site with Hugo and publishes it automatically. No manual build/upload step. - Domain:
coilltean.net, pointed at GitHub Pages via DNS A records, with astatic/CNAMEfile in the repo telling GitHub which domain to serve
3. Repo structure
bench-log/
├── content/
│ ├── _index.md ← homepage stub
│ └── projects/
│ ├── project-portfolio-website.md
│ ├── setup-vpn-to-home.md
│ ├── wifi-adapter-options.md
│ ├── finish-modding-the-wii.md
│ ├── fix-laptop.md
│ ├── service-database.md
│ └── arduino-wifi-connection.md
├── layouts/
│ ├── _default/baseof.html ← base HTML wrapper
│ ├── index.html ← homepage (project list/dashboard)
│ ├── partials/project-card.html
│ └── projects/single.html ← individual project page
├── static/
│ ├── css/style.css
│ ├── CNAME ← custom domain config for GitHub Pages
│ └── admin/ ← Decap CMS files (see section 6 — not finished)
│ ├── index.html
│ └── config.yml
├── archetypes/projects.md ← template used by `hugo new`
├── .github/workflows/hugo.yml ← auto build + deploy
├── hugo.toml ← site config (baseURL, etc.)
└── README.md
4. Frontmatter fields (per project file)
Each project .md file starts with a block like this:
---
title: "Setup VPN to Home"
date: 2026-07-20
status: "blocked" # planned | active | blocked | done
priority: "medium" # low | medium | high
started: 2026-07-20
target:
progress: 10 # 0-100, drives the progress bar
tags: [networking, homelab]
lastLog:
date: "07/29"
text: "Waiting on router firmware update before WireGuard port-forward will stick."
---
Below the --- block is the Markdown body — Scope, Deliverables, Resources & Dependencies, Definition of Done, and a Log section with dated bullet points.
The status field drives the colored LED indicator and which group a project sorts into on the homepage. lastLog is just what shows as the one-line summary on the homepage card — update it whenever you add a new log entry so the dashboard reflects the latest state.
5. How to update the site today
Option A — edit directly on GitHub.com (works from any device, including phone)
- Go to the file in the repo (e.g.
content/projects/setup-vpn-to-home.md) - Click the pencil icon → edit → Commit changes
- Site rebuilds automatically within about a minute
Option B — edit locally and push via git
git add .
git commit -m "update project status"
git push
Option C — Decap CMS admin panel — set up but not finished yet, see below.
6. In progress: phone-friendly CMS (Decap CMS)
Goal: a form-based editor at coilltean.net/admin so you can update project status/notes from your phone without touching Markdown or git.
Done:
static/admin/index.htmlandstatic/admin/config.ymladded to the repo- Config defines editable fields matching the frontmatter (status, priority, dates, progress, tags, log summary, body)
Not done yet — remaining steps:
- Fork
github.com/SubhenduX/decap-cms-cloudflare-pagesto your GitHub account - Deploy that fork as a Cloudflare Pages project (free) — this hosts the small login-handshake server GitHub requires
- Create a GitHub OAuth App (Settings → Developer settings → OAuth Apps), using the
.pages.devURL from step 2 as both the homepage and callback URL - Add the OAuth app’s Client ID and Client Secret as environment variables (
GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET) in the Cloudflare Pages project settings, then redeploy - Replace the placeholder
base_urlinstatic/admin/config.ymlwith the real.pages.devURL, commit, push - Visit
coilltean.net/admin— should show a “Login with GitHub” screen
This is the only piece of the setup that’s not finished. Until it is, use Option A or B above.
7. Local tooling status
- Hugo: not yet installed on the Windows machine. Only needed for local preview (
hugo server) or thehugo newshortcut for scaffolding new project files — not required to update the live site, since GitHub Actions does the building. - To install:
winget install Hugo.Hugo.Extendedin PowerShell, then reopen PowerShell. - Git: installed and working (was the earlier blocker — resolved via Git for Windows).
8. DNS records (for reference, at your domain registrar)
A @ 185.199.108.153
A @ 185.199.109.153
A @ 185.199.110.153
A @ 185.199.111.153
CNAME www Lilneenja.github.io (optional, only if www.coilltean.net should work)
Plus static/CNAME in the repo containing exactly coilltean.net.
GitHub Pages custom domain is also set in Settings → Pages → Custom domain on the repo, with “Enforce HTTPS” checked.
9. Known gotchas hit so far (for future reference)
theme = ""inhugo.tomlbreaks the GitHub Actions build (Hugo tries to load a nonexistent module) — must be removed entirely, not left blank, since this site uses custom layouts, no theme.- Node.js 20 deprecation warnings in Actions logs are harmless — GitHub auto-upgrades the runner.
- CRLF/LF line-ending warnings from git on Windows are cosmetic, not errors.
- Apex domains (
coilltean.netwith no subdomain) can’t use a CNAME DNS record — hence the four A records instead.
10. Next steps (suggested order)
- Finish the Decap CMS OAuth setup (section 6) if phone editing is still wanted
- Optionally install Hugo locally for previewing before pushing
- Fill in remaining “planned” projects (Service Database especially needs scope defined — currently a placeholder)
- Longer term: once the VPN project is working, consider self-hosting the site on home hardware instead of GitHub Pages (not urgent — GitHub Pages is free and zero-maintenance)