CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a Jekyll-based academic personal homepage (forked from the “AcadHomepage” template), deployed via GitHub Pages at dajiaohuang.github.io. The site is for Wu Shuwen, a Master’s student at NUS.
Commands
# Start local dev server with live reload
bash run_server.sh
# Equivalent to:
bundle exec jekyll liveserve
# Install dependencies (if Gemfile.lock is missing or stale)
bundle install
The site is served at http://127.0.0.1:4000. Jekyll’s liveserve auto-rebuilds on source changes.
Architecture
Build system: Uses the github-pages gem (not standalone Jekyll), which locks the Jekyll version and included plugins to match GitHub Pages’ production environment. The Gemfile also pulls in hawkins for live reload via liveserve.
Page structure (single-page site):
_layouts/default.html— the only layout; assembles head, masthead, sidebar, content, and scripts_pages/about.md— the sole content page, mapped to/viapermalink: /. All sections (About Me, News, Publications, etc.) live in this one Markdown file. Uses raw HTML mixed with Markdown._data/navigation.yml— top nav links pointing to anchor fragments on the single page
Key includes:
_includes/author-profile.html— sidebar with avatar, bio, and social/contact links configured in_config.ymlunderauthor_includes/fetch_google_scholar_stats.html— fetchesgs_data.jsonfrom thegoogle-scholar-statsbranch via jsDelivr CDN (or raw GitHub ifgoogle_scholar_stats_use_cdn: false), renders total citations and per-paper citation counts for elements with classshow_paper_citations_includes/head.html,_includes/head/custom.html,_includes/seo.html— meta tags, SEO, CSS_includes/masthead.html— top navigation bar_includes/sidebar.html— conditionally renders author profile
Styling: SCSS in _sass/, sourced from the Minimal Mistakes Jekyll theme. Entry point is assets/css/main.scss. Custom styles (.paper-box, .badge, anchor offset) are appended at the bottom of assets/css/main.scss.
JavaScript: jQuery-based. Entry point assets/js/_main.js initializes plugins (FitVids, Stickyfill, SmoothScroll, Magnific Popup). assets/js/collapse.js handles collapsible sections.
Google Scholar integration: A GitHub Actions workflow (.github/workflows/google_scholar_crawler.yaml) runs daily at 08:00 UTC and on each page build. It executes google_scholar_crawler/main.py, which crawls Google Scholar for the ID set in the GOOGLE_SCHOLAR_ID repository secret, then force-pushes the resulting JSON to the google-scholar-stats branch. The frontend loads this data client-side.
Configuration
All site configuration is in _config.yml:
title,description,repository— basic site identityauthorhash — name, avatar path (relative to repo root), bio, location, googlescholar URL, email, and optional social linksgoogle_scholar_stats_use_cdn— whether to fetch citation data via jsDelivr CDN or raw GitHub URLsgoogle_analytics_id— optional GA tracking ID- SEO verification keys (
google_site_verification,bing_site_verification,baidu_site_verification)
Content Editing
The main page is _pages/about.md. It supports:
- Standard Markdown and inline HTML
<span class='anchor' id='some-id'></span>for navigation anchor points<div class="paper-box">with nestedpaper-box-image/paper-box-textfor publication entries<span class='show_paper_citations' data='PAPER_ID'></span>to display per-paper Google Scholar citation counts (thedataattribute holds the Google Scholar paper ID)
Images go in images/. The avatar is images/avatar.png (referenced as image/avatar.png in _config.yml).