Repository Specification: Academic Personal Website
Repository Specification: Academic Personal Website
Purpose
This repository contains a Jekyll-based academic personal website for Sihan (Sandy) Yuan, a KIPAC Fellow at Stanford University. The site is built on the academicpages template (a fork of Minimal Mistakes Jekyll theme) and is hosted on GitHub Pages at sandyyuan.github.io.
Core Technologies
- Jekyll - Static site generator
- GitHub Pages - Hosting platform
- Minimal Mistakes - Base Jekyll theme
- GitHub Actions - Automated publication updates
- NASA ADS API - Publication data source
Repository Structure
Configuration Files
_config.yml- Main Jekyll configuration with site metadata, author info, navigation settingsGemfile/Gemfile.lock- Ruby dependencies for Jekyllpackage.json- Node.js dependencies for JavaScript build processes
Content Directories
_pages/ - Static Pages
about.md- Homepage/about section (permalink:/)publications.md- Publications page with dynamic loadingcv.md- CV page with embedded PDF viewer404.md- Error page- Other utility pages (archive, sitemap, etc.)
_posts/ - Blog Posts
- Contains sample blog posts (currently unused)
- Format:
YYYY-MM-DD-title.md
_publications/ - Publication Entries
- Individual publication markdown files
- Auto-generated from publication data
_data/ - Data Files
navigation.yml- Main navigation menu structureauthors.yml- Author informationui-text.yml- UI text translations
Layout & Theme
_layouts/ - Page Templates
single.html- Single page/post layout with sidebararchive.html- Archive page layoutcv.html- CV-specific layoutdefault.html- Base layout with responsive fixessplash.html- Hero/splash page layout
_includes/ - Reusable Components
head/- Header elements and metadataauthor-profile.html- Author sidebar widgetarchive-single.html- Archive item displayscripts.html- JavaScript includes- Analytics, comments, social sharing components
_sass/ - Styles (not shown but referenced)
- SCSS files for styling
Assets
assets/
css/- Compiled stylesheetspublications.css- Publications page stylingoverride.css- Custom style overrides
js/- JavaScript filespublications.json- Generated publication datapublications-loader.js- Dynamic publication loadingcustom.js- Custom JavaScriptmain.min.js- Minified main JavaScript
files/
CV1.pdf- CV document- Other downloadable files
images/
profile.jpg- Profile photo- Favicons and other images
Automation
.github/ - GitHub Actions
workflows/update-publications.yml
- Runs weekly (Sunday midnight) or manually
- Fetches publications from NASA ADS API
- Creates PR with updated publications
scripts/
fetch_publications.py- Main script to fetch from ADS API- Uses ORCID: 0000-0002-5992-7586
- Outputs to
assets/js/publications.json - Handles errors gracefully
test_ads_token.py- Token validation script
Key Features
1. Automated Publication Updates
- Workflow: GitHub Action runs weekly
- Process:
- Fetches publications using NASA ADS API
- Processes and formats publication data
- Saves to
publications.json - Creates PR if changes detected
- Requirements:
ADS_TOKENGitHub secret
2. Dynamic Publications Display
- Frontend: JavaScript-based loading from JSON
- Features:
- Tab filtering (All/First Author)
- Citation counts
- Links to ADS and arXiv
- Fallback: Links to external publication databases
3. Responsive Layout Fixes
- Custom CSS in
head/custom.htmlensures proper sidebar positioning - Layout adjustments for mobile/tablet/desktop views
- Sidebar width: 250px (desktop), 200px (tablet), 100% (mobile)
4. CV Integration
- Embedded PDF viewer with download option
- Custom layout for optimal display
Important Files for Maintenance
Content Updates
_pages/about.md- Main bio/homepage content_data/navigation.yml- Menu items_config.yml- Site metadata and social links
Publication System
.github/scripts/fetch_publications.py- Modify publication fetching logicassets/js/publications-loader.js- Change publication display.github/workflows/update-publications.yml- Adjust update schedule
Styling
assets/css/override.css- Add custom stylesassets/css/publications.css- Publication-specific styles
Environment Variables/Secrets
ADS_TOKEN- NASA ADS API token (stored as GitHub secret)
Build Process
- Jekyll processes markdown files into HTML
- GitHub Pages automatically builds on push to main branch
- Publications update via GitHub Actions (weekly)
Local Development
bundle install # Install Ruby dependencies
bundle exec jekyll serve # Run local server
Key Customizations from Base Template
- Automated publication fetching system
- Responsive layout fixes for better sidebar behavior
- Custom publications page with dynamic loading
- Integrated CV viewer
- Removed/disabled teaching section
- Profile and bio specific to Sihan Yuan
Notes for Developers
- The site uses Jekyll 3.10.0 (GitHub Pages compatible)
- Custom responsive fixes are critical - don’t remove inline styles in layouts
- Publication updates create PRs rather than direct commits for safety
- The ADS API token must be kept secure and updated if expired
File Naming Conventions
- Pages:
_pages/[name].mdor.html - Posts:
_posts/YYYY-MM-DD-[title].md - Publications:
_publications/YYYY-MM-DD-[title].md - Talks:
_talks/YYYY-MM-DD-[title].md
Dependencies
Ruby Gems (via Bundler)
- github-pages
- jekyll-feed
- jekyll-sitemap
- hawkins
Python (for publication updates)
- requests
- datetime
- json
JavaScript
- jQuery 1.12.4
- Various jQuery plugins (fitvids, greedy-navigation, magnific-popup, smooth-scroll)
- Stickyfill
Debugging Tips
- Publications not updating: Check GitHub Actions logs and ADS_TOKEN validity
- Layout issues: Check responsive CSS in
head/custom.html - Build failures: Run
bundle updateto update dependencies - Local dev issues: Delete
_site/folder and rebuild
Repository URLs
- Live Site: https://sandyyuan.github.io
- Repository: https://github.com/sandyyuan/sandyyuan.github.io
- Base Template: https://github.com/academicpages/academicpages.github.io
