# CLAUDE.md

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

## Project Overview

This is a static website built with [Zine](https://zine-ssg.io/), a static site generator written in Zig. The site uses:

- **SuperMD (.smd)** for content pages - a Markdown superset with embedded templating
- **SuperHTML (.shtml)** for layout templates - HTML with templating extensions
- **Nix** for development environment and dependency management

## Development Commands

### Development Server
```bash
# Start development server with live reload (default: localhost:1990)
zine

# Start with custom host/port
zine --port 8080 --host 0.0.0.0

# Include draft pages
zine --drafts
```

### Build for Production
```bash
# Generate static site for deployment
zine release
```

### Environment Setup
```bash
# Enter development shell with zine available
nix develop
```

## Project Structure

### Content Files (.smd)
- `content/` - All site content in SuperMD format
  - `index.smd` - Homepage
  - `about.smd` - About page
  - `blog/` - Blog posts and index
  - `devlog/` - Microblog entries

### Layout Templates (.shtml)
- `layouts/` - SuperHTML templates
  - `templates/base.shtml` - Base template with site navigation
  - `index.shtml`, `page.shtml`, `post.shtml` - Page-specific layouts
  - `blog.shtml`, `devlog.shtml` - Section layouts
  - `*.xml` - RSS feed templates

### Configuration
- `zine.ziggy` - Site configuration (title, URLs, asset paths)
- `flake.nix` - Nix development environment with Zine binary

### Assets
- `assets/` - Static assets (CSS, JS, images)
  - Includes math rendering (Temml) and syntax highlighting

## Architecture Notes

### Content Types
1. **Pages** - Individual content files with frontmatter and layout assignment
2. **Blog** - Traditional blog with separate pages per post
3. **Devlog** - Microblog format with multiple entries on single page

### Templating System
- Uses Scripty expression language for logic
- SuperHTML templates extend base template via `<extend template="base.shtml">`
- Content rendered via `$page.content()`, metadata via `$page.title`, etc.
- Site-wide variables available via `$site.*`

### Asset Handling
- Static assets referenced via `$site.asset('filename').link()`
- Page-specific assets stored alongside content files
- CSS and JS assets included in base template

The development server automatically rebuilds on file changes with configurable debounce timing.