This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is the civictech.ca website — a Jekyll 4 static site for Civic Tech Toronto, hosted on GitHub Pages.
# Install Ruby dependencies
make install # or: bundle install
# Start development server
make serve # http://localhost:4000
make serve-incremental # faster rebuilds
# Regenerate tag/category data and pages (required after content changes)
make generate
# Update archives submodule to latest
make update # or: git submodule update --remote --merge
# Clean build artifacts
make cleanThe make generate step must be run before serving if you've changed content in the archives/ submodule, as it runs four shell scripts that extract tags and categories from front matter and write them to _data/ and tags//categories/ directories.
All actual content (meetups, projects, people, organizations, venues, resources) lives in the archives/ submodule — a separate repository updated daily by CI. The main repo contains only templates, styles, scripts, and site configuration. When working with content, always remember to initialize submodules:
git submodule update --init --recursiveDefined in _config.yml, collections map to these URL paths:
archives/_meetups/→/events/archives/_projects/→/projects/archives/_people/→/people/archives/_organizations/→/organizations/archives/_venues/→/venues/archives/_resources/→/resources/_announcements/→/announcements/
Tags and categories are not manually maintained — they're generated from collection front matter by bash scripts in _scripts/:
generate_tag_data.sh→ writes_data/tags.ymlgenerate_tag_pages.sh→ writestags/*.htmlgenerate_category_data.sh→ writes_data/categories.ymlgenerate_category_pages.sh→ writescategories/*.html
The CI build (.github/workflows/pages.yml) always runs make generate before jekyll build. Do not manually edit files in tags/, categories/, or _data/tags.yml/_data/categories.yml — they will be overwritten.
Site-wide data is in _data/:
navigation.yml— header/footer nav structurefooter_social.yml— social links withrelattribute support (used for Mastodon verification)featured_topics.yml— homepage featured topics
The jekyll_picture_tag plugin processes images from archives/images/ and caches generated thumbnails in assets/thumbs/. This requires libvips and imagemagick to be installed locally. The assets/thumbs/ directory is gitignored and regenerated at build time.
pages.yml: Triggers on push tomain. Runsmake generate, thenjekyll build, then deploys to GitHub Pages.update-submodule.yml: Runs daily at midnight UTC, creates a PR to bump thearchivessubmodule to its latest master commit.
The project requires Ruby 3.2.2 (specified in .ruby-version). Use rbenv or rvm to manage this.