Open Research Data
GitHub Template for FAIR and Open Research Data
Transforming research documentation from static afterthought into living, executable environments.
This template provides an infrastructure for documenting, publishing, and archiving research data in line with the principles of FAIR and open science. It is independent of data type or format and implements best practices as outlined in The Turing Way. Core components include automated release management, integrated archiving with Zenodo, structured documentation via Quarto, and long-term accessibility through GitHub Pages.
π€ Academic Recognition
This approach was presented at the Digital Humanities Tech Symposium (DHTech) 2025 and exemplifies how reusable templates can address persistent challenges in research data management.
MΓ€hr, M., & Twente, M. (2025). One Template to Rule Them All: Interactive Research Data Documentation with Quarto. Digital Humanities Tech Symposium, NOVA University Lisbon. https://maehr.github.io/one-template-to-rule-them-all/.
Why use a template (even for small datasets)?
Conventional data publication as static supplementary files offers limited reproducibility and reusability. This template extends such practices by providing:
- π Executable narratives that embed code outputs directly into documentation
- π Automated deployment and testing that reduces technical overhead
- ποΈ Integrated archiving with DOI through seamless Zenodo integration
- π Scalability and consistency across diverse project types and domains
- π Enhanced security with automated vulnerability monitoring
- π€ Community standards following accepted ethics and collaboration practices
Features
Open Research Data
- Citable via DOI and CITATION.cff
- Automatic long-term archiving with Zenodo
- Licensed under AGPL 3.0 and CC BY 4.0 according to The Turing Way
- Template for reporting data issues via
github/ISSUE_TEMPLATE/data_issue_report.yml
Documentation
README.mdfollowing www.makeareadme.com and The Turing WayCHANGELOG.mdfollowing keepachangelog.com- Automated changelog generation with git-cliff
- Machine-readable project metadata in
package.jsonwith npm - Accessible documentation with GitHub Pages and Quarto
Consistency
- Code formatting with Prettier for general files, Ruff for Python, and styler and lintr for R
- Python type checking with ty
- Python dependency management with uv
- R dependency management with renv
- Commit messages following Conventional Commits enforced via husky
- Versioning following Semantic Versioning
- Workflow based on fork and pull with GitHub branch protection
- Issue tracking via issue templates
- File and folder naming conventions following The Turing Way
Security
SECURITY.mdfollowing GitHub guidelines- Vulnerability monitoring with GitHub Security Alerts
- Repository integrity enforced via GitHub branch protection
Ethics
CODE_OF_CONDUCT.mdfollowing the Contributor Covenant- Supportive first interactions via Greetings
Selected Use Cases
The template has been applied across domains including public history, political science, digital humanities, and teaching infrastructures.
π¬ Research Data Documentation
| Project | Preview |
|---|---|
| Stadt.Geschichte.Basel RDM Project documentation platform combining research data management with public history outreach |
![]() |
| sgb-figures Reproducible code and annotated data for publication-ready visualisations of research data |
![]() |
π Reproducible Research Workflows
| Project | Preview |
|---|---|
| nordatlantisk-ft Voting records from the parliament of Denmark with complete data scraping and analysis pipeline |
![]() |
| maxvogt-analysis Multi-step data compilation workflow documentation |
![]() |
| Modelling Marti Topic modeling project with interactive visualizations and multimedia content as narrative elements |
![]() |
π Academic Events & Teaching
| Project | Preview |
|---|---|
| Digital History Switzerland 2024 Conference website with program, abstracts, and participant information |
![]() |
| Digital Humanities Bern Department hub featuring news, events, and course information |
![]() |
| Decoding Inequality 2025 University course website with syllabus and materials |
![]() |
π Living Publications & Handbooks
| Project | Preview |
|---|---|
| Non-discriminatory Metadata Comprehensive handbook that functions as both documentation and scholarly publication |
![]() |
| One Template to Rule Them All This repositoryβs own presentation site, demonstrating meta-application |
![]() |
Installation
We recommend using GitHub Codespaces for a reproducible setup.
Getting Started
For Most Users: Reproducible Setup with GitHub Codespaces
Use this template for your project in a new repository on your GitHub account.

Click the green
<> Codebutton at the top right of this repository.Select the βCodespacesβ tab and click βCreate codespace on
mainβ. GitHub will now build a container that includes:- β
Node.js (via
npm) - β
Python with
uv - β
R with
renv - β Quarto

- β
Node.js (via
Once the Codespace is ready, open a terminal and preview the documentation:
uv run quarto preview
Note: All dependencies (Node.js, Python, R, Quarto) are pre-installed in the Codespace.
π©βπ» Advanced Local Installation
Prerequisites
- Node.js
- R and Rtools (on Windows)
- uv (Python manager)
- Quarto
Note:
uvinstalls and manages the correct Python version automatically.
Local Setup Steps
# 1. Install Node.js dependencies
npm install
npm run prepare
# 2. Setup Python environment
uv sync
# 3. Setup R environment
Rscript -e 'install.packages("renv"); renv::restore()'
# 4. Preview documentation
uv run quarto previewProject Setup
After creating your project from this template (either via Codespaces or local setup), follow the comprehensive checklist in TODO.md to customize and finalize your project. The checklist includes essential setup tasks, optional enhancements, and verification steps to ensure your research data repository is properly configured.
Use
Check that all files are properly formatted.
npm run checkFormat all files with Prettier.
npm run formatFormat all Python files with Ruff and lint with ty (if applicable).
uv run ruff format
uv run ruff check
uv run ty checkFormat all R files with styler and lint with lintr.
styler::style_dir(".")
lintr::lint_dir(".")Run the wizard to write meaningful commit messages.
npm run commitRun the wizard to create a CHANGELOG.md.
npm run changelogPreview the documentation.
quarto previewCheck for broken links in the rendered site (requires _site directory from quarto render).
npm run deadlink-checkSupport
This project is maintained by @maehr. Please understand that we canβt provide individual support via email. We also believe that help is much more valuable when itβs shared publicly, so more people can benefit from it.
| Type | Platforms |
|---|---|
| π¨ Bug Reports | GitHub Issue Tracker |
| π Report bad data | GitHub Issue Tracker |
| π Docs Issue | GitHub Issue Tracker |
| π Feature Requests | GitHub Issue Tracker |
| π‘ Report a security vulnerability | See SECURITY.md |
| π¬ General Questions | GitHub Discussions |
Roadmap
There are currently no changes planned.
Contributing
Please see CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
License
The data in this repository is released under the Creative Commons Attribution 4.0 International (CC BY 4.0) License - see the LICENSE-CCBY file for details. By using this data, you agree to give appropriate credit to the original author(s) and to indicate if any modifications have been made.
The code in this repository is released under the GNU Affero General Public License v3.0 - see the LICENSE-AGPL file for details. By using this code, you agree to make any modifications available under the same license.









