Architecture
Current as of 2026-06-03.
Overview
Static Jekyll site for MethylGrammarLab, deployed as GitHub Pages for methylgrammarlab.org via CNAME.
Runtime And Dependencies
- Ruby/Jekyll via
Gemfile;.ruby-versionpins local development to Ruby3.3.4, matching the current GitHub Pages runtime. - The primary dependency is the
github-pagesgem; localbundle installcurrently resolvesgithub-pages 232and Jekyll3.10.0. - Local Ruby is provided by
rbenvunder/Users/benbfly/.rbenv;~/.zshrcinitializes rbenv so fresh zsh shells use.ruby-versionautomatically. - The local Ruby was compiled with ruby-build, local OpenSSL, and local libyaml so native gems build for arm64 macOS instead of relying on Apple system Ruby.
- These local Ruby/rbenv changes do not affect GitHub Pages hosting. GitHub Pages builds with GitHub’s own runtime;
.ruby-versionis a local development hint. _config.ymlenablesjekyll-feedandjekyll-sitemap; templates also use `
, so the GitHub Pages stack is expected to provide jekyll-seo-tag`.
- CSS is compiled from
assets/main.scss, which imports vendored Bootstrap 4 Sass, Bootstrap-4-Jekyll helpers, syntax highlighting, and local customization. - Bootstrap and jQuery browser assets are vendored under
_sass/bootstrap/andassets/javascript/bootstrap/;update_bootstrap.shrefreshes them with npm. - External browser scripts are loaded from
_includes/head.html: Altmetric/CloudFront embed, Citation.js, and Dimensions badges.
Layout And Rendering
_layouts/default.htmlcomposes_includes/head.html,_includes/header.html, page content, and_includes/footer.html._layouts/page.html,_layouts/post.html, and_layouts/home.htmlare thin wrappers arounddefault.- Header navigation comes from
_config.ymlheader_pages; theJoin us!link is hard-coded in_includes/header.html. index.mdusesdefaultand includes_includes/desc.htmlfor the homepage text.
Content Model
- Top-level Markdown/HTML files define public pages such as
index.md,people.md,research.md,pubs.md,openings.md, andcontact.md. - Jekyll collections in
_config.yml:members,jobs,projects,tools, andteaching. They are consumed by listing pages and are not configured for standalone output. people.mdreads_members/currentand_members/past; member front matter supports optionalwebsite,orcid,current_address, andcurrent_address_urlfields in addition to the existing name/position/contact/photo fields.research.mdreads_projects;openings.mdreads_jobs;tools.mdandteaching.mdread their matching collections.- Publications are CSL-style JSON records under
_data/pubsrendered bypubs.md;_bibliography/toprefs.bibis a BibTeX source/reference file.
Assets And Styling
- Images, PDFs, RMarkdown/html workshop material, and a bigWig data file live under
assets/anddatafiles/. assets/css/cards.cssprovides shared card styles for people, research, publications, and openings pages.- Theme variables are Sandstone/Bootswatch-derived in
_sass/_variables.scss;_sass/_bootstrap_customization.scsscurrently offsets the fixed-top navbar.
Build And Deployment
- Local build/serve: open a fresh shell with rbenv initialized,
cd /Users/benbfly/Documents/benbfly.github.io, then runbundle exec jekyll buildorbundle exec jekyll serve. - The normal preview URL is
http://127.0.0.1:4000; the in-app browser can be used to inspect it before commits. .travis.ymlruns Ruby 2.2 andbundle exec jekyll build..gitignoreexcludes generated build/dependency outputs including_site,.sass-cache,.jekyll-metadata,node_modules,package-lock.json, andGemfile.lock.
