qqs (short for quick quarto setup) makes starting a new research project painless.
With a single call to qqs(), you can instantly create a clean, reproducible folder structure, complete with essential starter files designed for academic workflows.
Whether you're writing a manuscript, preparing a presentation, or organizing your analysis pipeline, qqs helps you work faster and stay organized. The structure follows best practices in academic research and is based on the author's experience managing multiple projects efficiently.
Note: This package originated as a personal side project and is now being actively developed as a course companion for QMIR -- Quantitative Methods in International Relations and European Politics at the University of Mannheim. The goal is a minimalist, dependency-light package optimized for the workflow taught in the course: R + Quarto + Git/GitHub in Positron. It is intentionally kept simple and opinionated to lower the barrier for students applying course workflows to their own term papers and theses.
- One command, in-place scaffolding -- Call
qqs()from inside your project folder and the package writes its files directly into the current working directory. Existing files (cloned dataset, README, etc.) are left untouched. - Built-in Quarto integration -- Generates
.qmdfiles for the manuscript, presentation, and code template, plus areferences.biband a.gitignore. - Centralized project metadata -- A single
_quarto.ymldefines the shared author/date/bibliography/execute defaults for every document. - Student-ready options -- Include a bilingual (German/English) statutory declaration and a student ID footnote for term papers.
- Native title page -- Optional
title-page.texincluded before the manuscript body. No Quarto extensions required.⚠️ Experimental and not yet fully supported. - Quarto getting-started links -- Each generated document carries a link to the relevant Quarto documentation page, so students can quickly find help.
Install the development version from GitHub:
# install.packages("remotes") # if not already installed
remotes::install_github("dertristan/qqs")The core function is qqs(). The intended workflow: clone or cd into the folder where your project lives (e.g. an exam repository containing a dataset and a README), then call qqs(). The function writes its scaffold into the current working directory and never touches files it didn't generate itself.
Basic example:
library(qqs)
# From inside the project folder
qqs()This scaffolds:
_quarto.yml-- project-level metadata (author, date, bibliography, execute defaults) shared across documentsmanuscript.qmd-- main manuscriptpresentation.qmd-- minimal Reveal.js presentationcode/00_code_template.qmd-- copy-and-rename code template for each analysisdata/-- with01_raw,02_processed, and03_finalsubfoldersreferences.bib-- shared bibliography.gitignore
When title_page = TRUE a native title-page.tex snippet is added and pulled in via include-before-body.
Project structure (defaults):
.
├── _quarto.yml
├── code
│ └── 00_code_template.qmd
├── data
│ ├── 01_raw
│ ├── 02_processed
│ └── 03_final
├── manuscript.qmd
├── presentation.qmd
├── references.bib
└── .gitignore
The setup keeps data, code, and outputs clearly separated -- making it easy to embed computed results directly into manuscripts or presentations using Quarto's embedding feature.
Custom example:
qqs(
author = "Bilbo Baggins",
title = "There and Back Again",
subtitle = "A Hobbit's Holiday",
student_id = 3791,
stat_decl = TRUE
)See ?qqs for the full list of arguments.
-
Quarto authoring with Positron for help with manuscript authoring.
-
Quarto computations with Positron for help with code and computations.
-
Quarto Reveal.js documentation for help with slide authoring.
MIT License © Tristan Muno
If you use this package in your research:
Muno, Tristan (2026). qqs: A lightweight R package for streamlined research project setup with Quarto. https://github.com/dertristan/qqs