w5isp.com/CLAUDE.md

1.9 KiB

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, 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