CLAUDE.md

Project overview

Vollger Lab website built with Jekyll (minimal-mistakes theme, dark skin). Content is generated from source data files (Excel spreadsheets, BibTeX, Typst) via Python scripts orchestrated by pixi tasks. Hosted on GitHub Pages at vollgerlab.github.io.

Build system

All tasks use pixi run <task>. Run pixi install first if dependencies are missing.

Key tasks

Task What it does
pixi run update Runs all generators (cv, pubs, people, software)
pixi run pubs Generates _includes/pubs.html from scripts/works.bib (calls Crossref API, slow)
pixi run cv Compiles CV PDF and copies to assets/CV/ (depends on cv_talks, cv_pubs)
pixi run people Generates _pages/people.md from OneDrive Excel spreadsheet
pixi run software Generates _pages/software.md from OneDrive Excel spreadsheet
pixi run check-pubs Dry-run check for ORCID works missing from works.bib
pixi run add-pubs Interactively add missing ORCID works to works.bib
pixi run local Serve site locally with Jekyll (port 4000)

Common update workflows

Adding a new publication

  1. pixi run check-pubs to see if ORCID has new works
  2. pixi run add-pubs to interactively add them (fetches metadata from Crossref, generates BibTeX)
  3. Or manually add a @article{...} entry to scripts/works.bib
  4. pixi run pubs to regenerate the HTML (hits Crossref API for citation counts)
  5. pixi run cv to update the CV PDF with the new publication

Adding a new talk

  1. Add the talk to CV/talks.xlsx
  2. pixi run cv (this runs cv_talks to regenerate the talks typst file, then compiles)

Updating people or software pages

These pull from Excel spreadsheets on OneDrive. Just run pixi run people or pixi run software.

Full site rebuild

pixi run update    # regenerate everything
pixi run local     # preview locally

File layout

Source data (inputs)

  • scripts/works.bib - BibTeX bibliography (canonical source for all publications)
  • CV/talks.xlsx - Talks spreadsheet
  • CV/metadata.toml - CV personal info and layout config
  • CV/modules_en/*.typ - Typst CV section files
  • CV/src/ - CV assets (avatar, signature, CSL style, split bib files)

Build scripts

  • scripts/build_from_citations.py - works.bib -> pubs.html (with Crossref citation counts)
  • scripts/check_orcid.py - Compare ORCID profile against works.bib
  • scripts/split-citations.py - Split works.bib into first/last/collaborative author bib files for CV
  • scripts/talks.py - talks.xlsx -> auto-generated-talks.typ
  • scripts/build_people.py - OneDrive Excel -> people.md
  • scripts/build_software.py - OneDrive Excel -> software.md

Generated files (do not edit by hand)

  • _includes/pubs.html - Full publication list HTML
  • _pages/people.md - People page
  • _pages/software.md - Software page
  • CV/modules_en/auto-generated-talks.typ - Generated talks section
  • CV/src/first-author.bib, CV/src/last-author.bib, CV/src/collaborative-author.bib - Split bib files
  • assets/CV/Mitchell-R-Vollger-CV.pdf - Compiled CV

Pages (safe to edit)

  • _pages/publications.md - Publications page layout (toggle button for date/role view)
  • _pages/CV.md - CV page (embeds PDF)
  • _pages/research.md - Research description
  • _pages/contact.md - Contact info
  • index.md - Homepage
  • _includes/select-pubs.html - Manually curated selected publications for homepage

Config

  • _config.yml - Jekyll config (excludes CV/ and scripts/ from build)
  • _data/navigation.yml - Top navigation bar
  • assets/css/main.scss - Custom CSS (publication tables, people page, avatars)

Notes

  • The pubs task calls the Crossref API for every publication to get citation counts, so it takes a while. Only run when you need updated counts or have new publications.
  • The publications page has two views (by date, by author role) toggled by a button. Both are generated in pubs.html as hidden/visible divs.
  • works.bib exists in both this repo and mrvollger.github.io. This repo is canonical.
  • The CV uses the brilliant-cv Typst package. The main file uses v2.0.5, modules use v2.0.3 (this is intentional and works).