CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is an academic portfolio website built using Jekyll and the Academic Pages theme. It’s designed for showcasing academic work including publications, talks, teaching, and research projects. The site is deployed via GitHub Pages at https://amberxchen.github.io.
Tech Stack
- Static Site Generator: Jekyll 3.x
- Theme: Academic Pages (based on Minimal Mistakes Jekyll theme)
- Frontend: HTML5, SCSS/CSS3, JavaScript (jQuery, FitVids, Magnific Popup)
- Backend: Ruby gems and Jekyll plugins
- Deployment: GitHub Pages
- Containerization: Docker with Ruby 3.2 base image
Development Commands
Local Development
Install dependencies:
bundle install
Serve locally:
bundle exec jekyll serve -l -H localhost
Site will be available at http://localhost:4000
Alternative serve command (with config):
jekyll serve -l -H localhost
Docker Development
Build and run with Docker Compose:
docker compose up
Site will be available at http://localhost:8000 (mapped from container port 4000)
Asset Building
Build JavaScript assets:
npm run build:js
Watch JavaScript changes:
npm run watch:js
Manual uglify/minify:
npm run uglify
CV Management
Update CV JSON from markdown:
./scripts/update_cv_json.sh
Site Architecture
Directory Structure
_config.yml- Main Jekyll configuration_pages/- Static pages (about, CV, publications, etc.)_posts/- Blog posts_publications/- Academic publication entries_talks/- Speaking engagement entries_teaching/- Teaching experience entries_news/- News/announcement entries_data/- YAML data files (authors, navigation, CV JSON)_layouts/- Jekyll page layouts_includes/- Reusable Jekyll partials_sass/- SCSS stylesheetsassets/- Static assets (CSS, JS, fonts, webfonts)images/- Image filesfiles/- PDFs and other downloadable filesmarkdown_generator/- Jupyter notebooks for generating markdown from TSV
Content Collections
The site uses Jekyll collections for structured content:
- Publications: Academic papers with metadata (venue, date, citation, etc.)
- Talks: Conference presentations and invited talks
- Teaching: Course teaching experiences
- Portfolio: Project showcases
- News: Announcements and updates
Key Configuration
- Site URL: https://amberxchen.github.io
- Author Profile: Configured in
_config.ymlunderauthor:section - Social Links: GitHub, Google Scholar, ORCID, Twitter
- Collections: Publications, talks, teaching, portfolio, news
- Plugins: Feed, sitemap, redirects, emoji support
Layout System
default.html- Base layout with header/footersingle.html- Single page/post layoutarchive.html- Collection listing pagestalk.html- Specialized layout for talk pagescv-layout.html- Custom CV page layout
Asset Pipeline
- SCSS compilation via Jekyll
- JavaScript concatenation and minification via npm scripts
- jQuery, FitVids, Magnific Popup, and custom navigation scripts
- Academic icon fonts and Font Awesome integration
Content Management
Adding Publications
Create markdown files in _publications/ with YAML frontmatter:
---
title: "Paper Title"
collection: publications
category: manuscripts
permalink: /publication/paper-slug
date: 2024-01-01
venue: 'Journal Name'
citation: 'Author et al. (2024). Paper Title. Journal Name.'
---
Adding Talks
Create markdown files in _talks/ following similar pattern with talk-specific metadata.
Content Generation
Use Jupyter notebooks in markdown_generator/ to batch-generate markdown files from TSV data for publications and talks.
Development Notes
- Jekyll configuration excludes development files (node_modules, vendor, etc.)
- Site builds automatically on GitHub Pages when pushed to master branch
- Local development requires Ruby, Bundler, and Node.js
- Docker provides isolated development environment
- CV can be maintained in markdown and converted to JSON for structured display
- Theme supports dark mode via
site_theme: "dark"in config
