From zero to repro in one build.
projr provides a single intuitive build function that automates rendering, versioning, archiving, and restoration for reproducible research projects. With projr, you can focus on your research whilst it handles the infrastructure.
# Put raw data in _raw_data/, outputs in _output/, analysis docs in project root:
projr_build()This one function:
- Clears
_outputdirectory - Renders all documents (R Markdown, Quarto, Bookdown)
- Versions raw data, outputs, and project
- Manages Git/GitHub commits (if configured)
- Archives to GitHub Releases, OSF, or local storage (optional)
projr_build_dev()Development builds:
- Route outputs to cache (
_tmp/) for inspection - Don't bump version numbers
- Don't upload to archives
- Let you iterate safely without overwriting released outputs
projr_restore_repo("owner/my-amazing-repo")Restoration:
- Clones the repository from GitHub
- Restores raw data from configured archives
- Reconstructs the full project structure
- Ready to reproduce the analysis
-
Code and data availability: Automatic archiving to GitHub Releases or OSF makes sharing complete research projects effortless
-
Correctness via version-linked inputs/outputs: Manifests link every output to the exact version of raw data and code that created it, ensuring traceability
-
Dependency capture: Optional renv integration locks R package versions for long-term reproducibility
Tip: You can adopt projr at any project stage—whether starting fresh or adding structure to existing work.
Note: Git/GitHub prompts are guided; no prior Git knowledge needed.
# Once on CRAN (future):
# install.packages("projr")
# For now, install from GitHub:
remotes::install_github("SATVILab/projr")- Get started - Quick setup guide
- How-to guides - Task-focused recipes
- Concepts - Understanding projr's approach
- Design - Design philosophy and architecture
- Reference - Complete function documentation
If you encounter a bug or have a feature request, please file an issue.
See LICENSE file for details.