CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Architecture Overview
This is an Academic Pages Jekyll site - a GitHub Pages template for academic personal websites. The codebase follows standard Jekyll conventions:
- Jekyll Collections: Publications (
_publications/
), talks (_talks/
), teaching (_teaching/
), portfolio (_portfolio/
), and posts (_posts/
) - Layouts: Custom layouts in
_layouts/
for different content types (single, talk, etc.) - Includes: Reusable components in
_includes/
(author-profile, navigation, etc.) - Assets: Styles in
_sass/
and JavaScript inassets/js/
- Configuration: Main site config in
_config.yml
, Ruby dependencies inGemfile
Development Commands
Local Development
# Install Ruby dependencies
bundle install
# Serve site locally (with live reload and localhost binding)
jekyll serve -l -H localhost
# Alternative with bundle exec
bundle exec jekyll serve -l -H localhost
Docker Development
# Set permissions and run with Docker
chmod -R 777 .
docker compose up
JavaScript Build
# Uglify and minify JavaScript assets
npm run build:js
# Watch for changes and auto-build
npm run watch:js
Content Generation
The markdown_generator/
directory contains Python scripts and Jupyter notebooks for generating markdown files from TSV data:
publications.py
- Generate publication pages frompublications.tsv
talks.py
- Generate talk pages fromtalks.tsv
- Jupyter notebooks (
.ipynb
) provide interactive versions
CV Management
# Update CV JSON from markdown (in scripts/)
./scripts/update_cv_json.sh
Site Configuration
Key configuration files:
_config.yml
- Main Jekyll configuration, site metadata, author info, collectionsGemfile
- Ruby gem dependencies including Jekyll pluginspackage.json
- Node.js dependencies for asset processing
GitHub Actions
- Talk Location Scraping: Automated workflow in
.github/workflows/scrape_talks.yml
that runs when talk files change, executingtalkmap.ipynb
to update geographic data
Content Structure
- Author Profile: Configured in
_config.yml
underauthor:
section - Publications: Academic papers with citation info, links, and abstracts
- Talks: Conference presentations with location data for mapping
- Teaching: Course information and materials
- Blog Posts: Standard Jekyll posts in
_posts/
Development Notes
- Site uses GitHub Pages compatible plugins only (whitelist in
_config.yml
) - Main JavaScript assets are concatenated and minified via npm scripts
- The site supports both local development and DevContainer/VS Code integration
- Talk locations are automatically geocoded and mapped using the talkmap feature