3.4 KiB
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 isgevhaz/hugo-theme-notrack; seethemes/notrack/README.mdfor the vendor notice.- Local mod:
layouts/partials/header.htmladds a "Latest Lake Report" nav link that auto-resolves to the most recent post under/blog/lake-report/.
- Local mod:
themes/ananke— still a git submodule, unused. Rungit submodule update --init --recursiveafter 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.mainSectionsinhugo.tomlis['CV', 'blog', 'projects']. Posts live incontent/blog/, project pages incontent/projects/.content/_index.mdis 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.cssis 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, andpickleball.html(a hand-written standalone page linked from the homepage) live here.layouts/_default/rss.xml— Empty stub. Combined withdisableKinds = ["RSS"]inhugo.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 inpublic/. Don't hand-edit files there.- Goldmark
unsafe = true— Goldmark normally strips raw HTML from Markdown;unsafe = truelets it pass through verbatim. Required becausecontent/_index.md(rotating-gradient pickleball button) andcontent/cv.mdembed inline<style>and<div>blocks. The "unsafe" name refers to XSS risk from untrusted Markdown authors, which doesn't apply here.
Workflow notes
- The
notracktheme expects animages/static dir for blog post hero images; blog posts colocate their images incontent/blog/<post>/. - The
notracktheme uses APIs deprecated in Hugo (libsass,.Site.AllPages); builds emit warnings but still succeed. Will need attention when those are removed upstream.