CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Overview
This is a personal academic website for Haozheng Wan (PhD student at HKU), built with Jekyll and deployed via GitHub Pages. It is based on the Academic Pages template, which was forked from the Minimal Mistakes Jekyll theme.
Commands
# Install Ruby dependencies
bundle install
# Run locally with live reload
bundle exec jekyll serve -l -H localhost
# Minify JavaScript (rarely needed)
npm run build:js
The site is auto-deployed by GitHub Pages on push to the main branch. No local build step is required before pushing.
Architecture
Jekyll collections (content types)
Content is organized into Jekyll collections defined in _config.yml:
- pages (
_pages/) — Standalone pages: About, Publications, CV, Accomplishments, etc. - talks (
_talks/) — Used as a travel photo gallery, not academic talks. Each file = one trip/album with images. - publications, teaching, portfolio — Defined in config but may not have content yet.
Key directories
| Directory | Purpose |
|---|---|
_pages/ | Site pages (about, publications, CV, etc.). Navigation is configured in _data/navigation.yml. |
_talks/ | Travel/photo gallery entries. Uses the talk layout. |
_data/ | YAML data files — navigation.yml (nav bar links), ui-text.yml (UI strings), authors.yml. |
_includes/ | Liquid partials reused across layouts — author-profile.html, masthead.html, sidebar.html, seo.html, etc. |
_layouts/ | Page templates: default.html (base), single.html, talk.html, archive.html, splash.html. |
_sass/ | SCSS stylesheets, organized by component (_sidebar.scss, _masthead.scss, etc.) plus vendor libs (breakpoint, susy, font-awesome, magnific-popup). |
assets/ | Static assets — CSS (including main.scss entry point), JS, fonts, webfonts. |
images/ | Site images including profile.png (avatar). |
markdown_generator/ | Python/Jupyter scripts to generate markdown files for publications and talks from TSV data. |
How pages work
Each page in _pages/ has front matter specifying its layout and permalink. For example, _pages/about.md renders at /about/ using the single layout with author_profile: true. The navigation bar is driven by _data/navigation.yml.
How the gallery (talks) works
_talks/ entries have front matter with title, caption, and header image fields. The talk layout (_layouts/talk.html) renders them as single pages. The _pages/talks.html page lists all talk entries as a grid of images.
Site configuration
_config.yml— Production configuration. Edit this for site-wide settings (author info, social links, analytics, collections)._config.dev.yml— Development overrides (disables analytics, expands CSS, useslocalhost:4000URL). Loaded automatically by Jekyll in development.
