This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
ActualPlay.Network is a static site generator project built with Eleventy (11ty) v2.0. It's a podcast/RPG blog converted from WordPress, featuring episodes organized by game systems with audio playback, RSS feeds, and metadata-driven navigation.
npm run start / npm run serve – Start development server with live reload (http://localhost:8080)npm run watch – Watch mode without server (useful for background work)npm run build – Production build (sets ELEVENTY_ENV=production, outputs to _site/)npm run debug – Debug mode with verbose output (DEBUG=* eleventy)All commands automatically set ELEVENTY_ENV to either development or production. The dev server includes BrowserSync auto-reload with a custom 404 middleware.
actualplay.11ty/
├── _data/ # Global data files
│ └── metadata.json # Site-wide metadata (title, feeds, author)
├── _includes/ # Template partials and layouts
│ ├── layouts/ # Post, home, new-listener layouts
│ ├── components/ # Reusable components (audio-box, system-list, article-footer)
│ └── postslist.njk # Posts collection template
├── posts/ # Podcast episodes (markdown with YAML frontmatter)
├── pages/ # Static pages (contact, resources, biographies)
├── feed/ # Feed templates (RSS, JSON, Podcast)
├── css/ # Stylesheets (passthrough copy)
├── js/ # JavaScript assets (passthrough copy)
├── img/ # Images (passthrough copy)
├── archive.njk # Tags/archive page
├── categories.njk # System categories page
└── _site/ # Build output (ignored by git)
Defined in .eleventy.js:
eleventy-plugin-rss – Feed generationeleventy-navigation – Navigation hierarchysystems – Aggregated game systems from posts with counts (sorted by frequency)tagList – Tags excluding metadata tags (all, nav, post, posts)readableDate() – Formats dates as "dd LLL yyyy"htmlDateString() – ISO format for HTML date inputshead(n) – Get first n items from arraymin() – Find minimum valuethreeThouStrSlice() – Truncate to 3000 chars (RSS workaround)inspect() – Debug filter (logs to console)Located in posts/ as .md files with YAML frontmatter:
---
title: Episode Name
description: Long description
date: YYYY-MM-DD
tags: [Tag1, Tag2, Podcast]
audio: https://... # Audio file URL
duration: "H:MM:SS"
size: 66824611 # File size in bytes
type: audio/mpeg # MIME type
image: https://... # Cover image
permalink: slug/ # Custom URL slug
layout: layouts/post.njk
systems: [FATE, DeltaGreen] # Game systems played
---
Content here...
Static pages in pages/ with frontmatter. Use layout: layouts/new-listener.njk or layouts/base.njk.
metadata.json contains:
Update the author block and feed paths if needed; the podcast feed pulls from posts with audio or simplecastembedcodesrc fields.
data.audio or data.simplecastembedcodesrcsystems array in post frontmatter; used on categories pagetagList collection, excluding metadata tagsTags in posts use tags: array in frontmatter.
threeThouStrSlice filter exists because some RSS readers have 3000-char limits