Website/CLAUDE.md
2026-04-25 00:36:46 -04:00

3.4 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this is

The source for danesabo.com, Dane's personal site. It's a Hugo static site. Output lands in public/ and is rsync'd to the production server.

Common commands

hugo server -D          # Local dev server with drafts
hugo                    # Build into public/
hugo new content/blog/my-post.md   # Scaffold a new post (uses archetypes/default.md, draft=true)
./deploy_website.sh     # rsync public/ → saboserver:/srv/www

The deploy_website.sh source path is hardcoded to /home/danesabo/Projects/Website/public (the Linux box). On this Mac (/Users/danesabo/Documents/Website), update LOCAL_DIR before running, or run deploys from the Linux machine.

Themes

hugo.toml sets theme = "notrack".

  • themes/notrack — vendored (was a submodule until 2026-04-25). Plain files in the repo, edit freely. Upstream is gevhaz/hugo-theme-notrack; see themes/notrack/README.md for the vendor notice.
    • Local mod: layouts/partials/header.html adds a "Latest Lake Report" nav link that auto-resolves to the most recent post under /blog/lake-report/.
  • themes/ananke — still a git submodule, unused. Run git submodule update --init --recursive after a fresh clone if you ever want it; otherwise it's harmless if uninitialized (Hugo only loads the active theme).

Architecture

  • content/ — Markdown sources organized by section. mainSections in hugo.toml is ['CV', 'blog', 'projects']. Posts live in content/blog/, project pages in content/projects/. content/_index.md is the homepage and contains inline HTML/CSS (the rotating-gradient pickleball button) — the homepage is not pure Markdown.
  • layouts/partials/head.html — Local override of the theme's head partial. Adds the custom dark-theme stylesheet on top of the theme's SCSS pipeline. Ordering matters: dark-theme.css is loaded last so it can override theme styles via !important.
  • static/css/dark-theme.css — Site-wide "Night Sky" palette overrides (twilight gold headings on dark gradient). Edit here for color/typography tweaks rather than forking the theme.
  • static/ — Served at site root verbatim. cv.pdf, transcript.pdf, and pickleball.html (a hand-written standalone page linked from the homepage) live here.
  • layouts/_default/rss.xml — Empty stub. Combined with disableKinds = ["RSS"] in hugo.toml, this exists to suppress an RSS-related theme error.
  • public/ — Generated output, committed to the repo (so the Linux deploy machine has something to rsync). When you rebuild locally, expect a large diff in public/. Don't hand-edit files there.
  • Goldmark unsafe = true — Goldmark normally strips raw HTML from Markdown; unsafe = true lets it pass through verbatim. Required because content/_index.md (rotating-gradient pickleball button) and content/cv.md embed inline <style> and <div> blocks. The "unsafe" name refers to XSS risk from untrusted Markdown authors, which doesn't apply here.

Workflow notes

  • The notrack theme expects an images/ static dir for blog post hero images; blog posts colocate their images in content/blog/<post>/.
  • The notrack theme uses APIs deprecated in Hugo (libsass, .Site.AllPages); builds emit warnings but still succeed. Will need attention when those are removed upstream.