What is projr?
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.
The whole game
# 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)
Try a development build
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
Restore later
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
Why it helps
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.
Installation
# Once on CRAN (future):
# install.packages("projr")
# For now, install from GitHub:
remotes::install_github("SATVILab/projr")Documentation
- 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
Getting help
If you encounter a bug or have a feature request, please file an issue.
Licence
See LICENSE file for details.