froggeR: Structured project standards for R and Quarto
Most programming languages have conventions for where files belong. R rarely agrees on one, and it shows. Scripts, Quarto documents, stylesheets, and data files pile up in root directories like laundry on a chair. froggeR offers a standard: R/ for scripts, pages/ for Quarto documents, data/ for data files, www/ for assets. Build habits that carry over whether you're writing an analysis, building an R package, or picking up a new language entirely.
- Why froggeR?
- Installation
- Project Creation
- Configuration & Reusability
- Templated Quarto Documents
- Git Protection
- Custom Styling
- Function Reference
- Getting Help
- Contributing
- License
froggeR gives every project the same enforced layout so you spend time analyzing, not organizing:
- Structure by default:
init()downloads the latest scaffold and you're working in seconds. Scripts go inR/, Quarto documents inpages/, assets inwww/, data indata/. Every project, every time. - Opinionated starting points:
R/_load.R,R/_libraries.R, andR/_data_dictionary.Rgive every project a consistent entry point.write_quarto()creates pre-formatted.qmdfiles with your author info and branding baked in. - Configure once, reuse everywhere:
write_variables()andwrite_brand()create your metadata and branding files. Save globally withsave_variables()andsave_brand(), and every future project picks them up automatically. - Protected by default: An opinionated
.gitignoreand pre-commit hooks keep sensitive data and common R artifacts out of version control. - Transferable habits: The same directory conventions used here mirror what you'll find in R packages, Shiny frameworks like golem and rhino, and other languages entirely. Good habits compound.
install.packages("froggeR")Initialize a complete project with a single command:
froggeR::init(path = "my_new_project")This creates:
my_new_project/
βββ R/
β βββ _data_dictionary.R # Variable labels and metadata
β βββ _libraries.R # Centralized package loading
β βββ _load.R # Sources everything. Your entry point.
βββ pages/
β βββ index.qmd # Main Quarto document
β βββ references.bib # Bibliography
βββ www/
β βββ custom.scss # Custom styling
β βββ tables.js # Table enhancements
βββ logos/ # Brand logos
βββ data/ # Data files (gitignored)
βββ _brand.yml # Quarto brand configuration
βββ _quarto.yml # Quarto project configuration
βββ _variables.yml # Author metadata
βββ .gitignore # Opinionated git protection
βββ .pre-commit-config.yaml # Pre-commit hook configuration
βββ README.md
froggeR stores configuration at two levels: global (system-wide) and project-local. Set it up once, and every future project inherits your settings.
froggeR::write_variables() # Create/edit _variables.yml (author metadata)
froggeR::write_brand() # Create/edit _brand.yml (colors, logos, typography)Both functions create the file if it does not exist, or open it for editing if it does. New files start from your global config or the remote template. When you're happy, persist to global config:
froggeR::save_variables() # Save project metadata for reuse
froggeR::save_brand() # Save project branding for reuseGlobal settings populate every new project created with init(). Edit the project copy directly when you need something specific.
Quickly generate new Quarto documents with pre-formatted headers:
froggeR::write_quarto(filename = "monthly_report")Your saved metadata automatically populates author information and branding.
froggeR includes a .gitignore that covers R artifacts, Quarto build files, data files, and common sensitive patterns:
froggeR::write_ignore()One set of rules. Comprehensive by default. If your project needs additional exclusions, edit .gitignore directly.
Generate a SCSS template for custom document styling:
froggeR::write_scss()
froggeR::write_scss("tables")Provides a formatted stylesheet with:
- SCSS defaults
- SCSS mixins
- SCSS rules
Customize your document's appearance by uncommenting desired styles.
| Function | Description |
|---|---|
init() |
Initialize a complete project from the latest remote template |
quarto_project() |
Removed. Use init() instead |
write_quarto() |
Create a Quarto document in pages/ |
write_variables() |
Create a _variables.yml metadata file |
write_brand() |
Create a _brand.yml brand configuration file |
save_variables() |
Save project _variables.yml to global config |
save_brand() |
Save project _brand.yml to global config |
write_ignore() |
Create an opinionated .gitignore |
write_scss() |
Create a custom.scss styling template in www/ |
- Documentation: froggeR website for full function references and vignettes
- Vignettes:
- Issues: Found a bug or have a feature request? Open an issue
We welcome contributions and ideas! Here's how you can help:
- Report bugs - Open an issue with a clear description
- Suggest features - Have an idea? Submit a feature request
- Share feedback - Let us know how froggeR is working for you
- Improve documentation - Help us make docs clearer and more complete
froggeR is licensed under the MIT License. See the LICENSE file for details.
froggeR is built with these excellent packages:
- cli - User-friendly command line interfaces
- fs - Cross-platform file system operations
- here - Project-oriented workflows
- usethis - Workflow automation
- rappdirs - Cross-platform configuration paths
Developed by Kyle Grealis
