Reproducible project template

Published

October 8, 2026

A flexible template for reproducible slides with Quarto, GitHub Actions, and GitHub Pages.

Deploy status

Last updated: October 8, 2026

Quick start

Use the GitHub CLI (gh):

gh repo create my-slides --template robinlovelace/reproducible-project-template
cd my-slides
# Enable Pages: Settings → Pages → Source: Deploy from a branch → Branch: gh-pages, / (root)
# Edit slides.qmd, then push
git push

Your slides are live in ~30 seconds.

Features

Feature Description
clean-revealjs theme Bundled in _extensions/, zero install needed
Auto-deploy peaceiris/actions-gh-pages@v4 on every push to main, publishes to gh-pages
Auto-detect Uses quarto inspect to detect R/Python needs; only installs what’s required
PR previews Deploy preview versions for review before merging
Quarto freeze Cache computation results locally; CI only re-renders markdown
Self-contained HTML Offline-capable HTML with all images, CSS, and JS embedded
PDF export Auto-generated via DeckTape on every release
Date-based releases Automatic versioned releases on every push
Citation support references.bib ready for bibliographies

Workflows

Workflow Trigger What it does
publish.yml Push to main Render site → deploy to GitHub Pages
release-standalone.yml Push to main Build self-contained HTML + PDF → create dated release
pr-preview.yml PR to main Build preview → deploy to temporary URL

Structure

├── index.qmd                   # Landing page
├── slides.qmd                  # Slide deck
├── paper.qmd                   # Paper (HTML + Word + PDF)
├── _quarto.yml                 # Project config (output-dir, freeze, navbar)
├── references.bib              # Bibliography
├── _extensions/clean/          # clean-revealjs theme (bundled)
└── .github/workflows/          # publish, release-standalone, pr-preview

Built with this template