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

42 lines
3.4 KiB
Markdown

# 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
```bash
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`](https://github.com/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.