# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Static website for W5ISP (amateur radio callsign) built with [Zola](https://www.getzola.org/), a Rust-based static site generator. ## Commands - `zola serve --drafts` - Local dev server with live reload, including drafts (default: http://127.0.0.1:1111). Always pass `--drafts` in dev so future-dated and draft posts are visible while working on them. - `zola build` - Build site to `public/` directory (drafts excluded, which is what deploys need) - `zola check` - Validate links and templates ## Architecture This is a standard Zola project: - **`content/`** - Markdown pages and blog posts. Zola uses `_index.md` for section pages and regular `.md` files for individual pages. - **`templates/`** - Tera templates (Jinja2-like syntax). Key templates: `base.html` (layout), `index.html` (homepage), `page.html` (single page), `section.html` (section listing). - **`sass/`** - SCSS stylesheets, auto-compiled by Zola (enabled in config). - **`static/`** - Static assets served as-is (images, fonts, etc.). - **`themes/`** - Zola themes (if using one). ## Deployment - CI/CD via Forgejo Actions at `git.mcintire.me` - Workflow: `.forgejo/workflows/deploy.yml` - Triggers on push to `main`: builds with Zola, deploys via rsync over SSH - Deploy target: `graham@skippy.w5isp.com:/home/graham/apps/w5isp.com/` - Caddy serves the site from that directory - Requires `DEPLOY_SSH_KEY` secret in Forgejo repo settings (ed25519 private key) - Theme (`themes/zolanight`) is a git submodule — checkout needs `submodules: true` - Zola version in workflow must match `zola.toml` format (0.22.1+, since older versions expect `config.toml`) ## Configuration - Sass compilation: enabled - Search index: disabled - Syntax highlighting theme: Catppuccin Mocha - Custom variables go in `[extra]` section of `zola.toml`