This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is Eric Ford's academic personal website built with Franklin.jl, a Julia-based static site generator. Source lives in the repo root; __site/ contains the generated output (not committed).
# Serve with hot reload at http://localhost:8000
julia --project=. -e 'using Franklin; serve()'
# or
julia --project=. scripts/build_local.jl --serve julia --project=. -e 'using Franklin; optimize()'
# or
julia --project=. scripts/build_local.jl julia --project=. scripts/import_bibtex.jl <file.bib>
All dynamic content is stored as TOML files in _data/ and rendered via custom Julia functions in utils.jl. The pattern is:
Create/edit a TOML file in _data/<category>/
The corresponding Markdown page calls a Franklin helper function (e.g., {{hfun_member_cards_from_dir members/postdocs}})
Franklin calls the matching hfun_* function in utils.jl, which loads the TOML and emits HTML
| Directory | Content |
|---|---|
_data/members/ | PI, postdocs, grad students, former members — each a TOML file |
_data/courses/psu_recent/ | Course cards (title, emoji, description, archive_url) |
_data/software/ | Software projects grouped by category subdirectory |
_data/publications/YYYY/ | Publication entries by year (parsed from ADS BibTeX) |
utils.jl)| Function | Purpose |
|---|---|
hfun_member_cards_from_dir | Render all member TOMLs from a directory |
hfun_course_cards_from_dir | Render course cards from a directory |
hfun_software_cards_from_dir | Render software cards from a directory |
hfun_publication_list | Filter & render publications by research_theme and/or tags |
format_citation | Format a single publication TOML as HTML citation |
Required: title, author, year, journal Optional: doi, adsurl, tags (array), research_themes (array), pages
New group member: add _data/members/<role>/<name>.toml — the page auto-discovers it
New course: add _data/courses/psu_recent/<course>.toml
New software: add _data/software/<category>/<name>.toml
New publication: add _data/publications/<year>/<key>.toml (or run import_bibtex.jl)
_layout/ — HTML templates (head.html, nav.html, foot.html, page_foot.html)
_css/custom.css — Penn State color palette (--psu-navy: #001E44, --psu-blue: #1E407C, --psu-accent: #009CDE) and all custom styling
Navigation items are configured in config.md under nav_items
Deploys to Netlify automatically on push to main via .github/workflows/Netlify.yml. The build downloads Julia 1.10.5, runs Franklin.optimize(), and publishes __site/. Requires NETLIFY_AUTH_TOKEN and NETLIFY_SITE_ID secrets.