How arith-geom/ag-comp-arith-geom works
Purpose and runtime
This repository builds the official static website for Heidelberg University’s Computational Arithmetic Geometry group. It is a Ruby/Jekyll site: source content is rendered at build time into static HTML/CSS/JS, then published through GitHub Pages. Local entry point: bundle exec jekyll serve; dependencies are defined in Gemfile and Gemfile.lock.
Site entry points and routing
Top-level landing and primary sections are Markdown pages, with navigation/content driven by front matter and data:
• index.md
• _pages/home.md
• _pages/members.md
• _pages/publications.md
• _pages/research.md
• _pages/contact.md
Jekyll layout selection is the main routing/rendering boundary. Shared page shell and specialized content layouts live in _layouts/default.liquid, _layouts/page.liquid, _layouts/publication.liquid, and _layouts/profiles/member.liquid.
Structured content model
Editorial data is primarily YAML under _data, separating content from templates. Important domain datasets include:
• _data/members.yml
• _data/publications.yml
• _data/teaching.yml
• _data/research.yml
• _data/navigation.yml
Research and teaching also use Jekyll collections/content files under _research/ and _teaching/, e.g. _research/galois-representations.md and _teaching/index.md. This boundary allows editors or a Pages CMS workflow to change structured records without altering rendering code.
Build-time content generation
Custom Ruby plugins convert structured records into generated pages, enforce naming rules, and provide presentation filters:
• _plugins/member_generator.rb
• _plugins/publication_generator.rb
• _plugins/teaching_generator.rb
• _plugins/shortlink_generator.rb
• _plugins/filename_checker.rb
These plugins are architecturally significant because generated member, publication, teaching, and redirect/shortlink routes depend on build-time transformations rather than only handwritten pages. _plugins/cache_bust_filters.rb supports asset versioning; _plugins/linkify_authors.rb enriches publication author output.
Rendering composition
Layouts compose reusable Liquid includes into site pages. The global shell is split into head, header, footer, and scripts:
• _includes/layout/head.liquid
• _includes/layout/header.liquid
• _includes/layout/footer.liquid
• _includes/scripts/scripts.liquid
Domain rendering is componentized for publications, projects, CVs, and repository information, notably _includes/components/citation.liquid, _includes/components/selected-papers.liquid, and _includes/cv/time_table.liquid. Page data flows from front matter/YAML collections through layouts and includes to static output.
Assets and browser behavior
Sass is compiled from the main stylesheet entry point and partials:
• assets/css/main.scss
• _sass/_variables.scss
• _sass/_themes.scss
Client-side JavaScript adds interactive presentation behavior, including search and MathJax configuration:
• assets/js/search/search.js
• assets/js/components/mathjax-setup.js
• assets/search-data.json
Large static PDFs and migrated archival materials are served directly from assets/uploads/, assets/migrated/, and assets/img/fileadmin/; they are content assets, not application-managed storage.
Delivery and quality boundaries
GitHub Actions provides the deployment pipeline in .github/workflows/pages.yml, targeting GitHub Pages. Repository configuration is centered in _config.yml and .pages.yml. A Python validation utility at .github/scripts/validate.py is available for content/data quality checks; it is separate from the Jekyll runtime. No server-side application, database, or API integration is indicated; external comment/embed providers are represented by optional Liquid includes such as _includes/content/disqus.liquid and _includes/content/giscus.liquid.
Main entry points: Gemfile Jekyll site build · default.liquid Liquid layouts · members.yml YAML domain data · member_generator.rb Custom generators
Components 18
Editorial Content
Pages, data, and collections edited for the site.
- Primary Markdown pages
index.md - YAML domain data · Members, publications, teaching, research, and navigation records.
_data/members.yml - Research collection
- Teaching collection
Jekyll Build
Ruby rendering and generation pipeline.
- Site configuration
_config.yml - Jekyll site build · Renders content into static HTML, CSS, and JavaScript.
Gemfile - Custom generators · Generate member, publication, teaching, and shortlink routes.
_plugins/member_generator.rb - Presentation filters · Adds asset cache busting and linked publication authors.
_plugins/cache_bust_filters.rb - Static site output
Presentation
Reusable templates and browser assets.
- Liquid layouts · Select page structure and specialized publication or profile views.
_layouts/default.liquid - Global shell includes · Head, header, footer, and scripts compose the shared page shell.
_includes/layout/head.liquid - Domain components · Citation, selected-paper, and CV presentation components.
_includes/components/citation.liquid - Sass stylesheets
assets/css/main.scss - Browser enhancements · Search and MathJax presentation behavior.
assets/js/search/search.js - Static content assets · PDFs, migrated materials, and images are published directly.
Delivery
Validation and GitHub Pages publishing.
- Content validation · Separate quality checks for site content and data.
.github/scripts/validate.py - Pages deployment
.github/workflows/pages.yml - GitHub Pages
Connections 19
- Primary Markdown pages → Jekyll site build: renders
- YAML domain data → Jekyll site build: supplies records
- Research collection → Jekyll site build: supplies collection
- Teaching collection → Jekyll site build: supplies collection
- Site configuration → Jekyll site build: configures
- YAML domain data → Custom generators: drives generated routes
- Teaching collection → Custom generators: drives generated routes
- Custom generators → Jekyll site build: extends build
- Presentation filters → Jekyll site build: extends rendering
- Jekyll site build → Liquid layouts: selects layouts
- Liquid layouts → Global shell includes: composes
- Liquid layouts → Domain components: renders
- Sass stylesheets → Jekyll site build: compiles
- Browser enhancements → Static site output: published with
- Static content assets → Static site output: copied to
- Jekyll site build → Static site output: generates
- Content validation → YAML domain data: checks
- Pages deployment → Static site output: publishes
- Static site output → GitHub Pages: hosted on