{"id":30292027,"url":"https://github.com/simonrolph/recorderfeedback","last_synced_at":"2025-08-17T00:05:40.322Z","repository":{"id":310090958,"uuid":"1038645381","full_name":"simonrolph/recorderFeedback","owner":"simonrolph","description":"R package for generating personalised, data-driven feedback","archived":false,"fork":false,"pushed_at":"2025-08-15T16:09:50.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T18:33:01.121Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonrolph.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-15T15:22:38.000Z","updated_at":"2025-08-15T16:09:54.000Z","dependencies_parsed_at":"2025-08-15T18:33:07.423Z","dependency_job_id":null,"html_url":"https://github.com/simonrolph/recorderFeedback","commit_stats":null,"previous_names":["simonrolph/recorderfeedback"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/simonrolph/recorderFeedback","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonrolph%2FrecorderFeedback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonrolph%2FrecorderFeedback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonrolph%2FrecorderFeedback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonrolph%2FrecorderFeedback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonrolph","download_url":"https://codeload.github.com/simonrolph/recorderFeedback/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonrolph%2FrecorderFeedback/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270786529,"owners_count":24644567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-17T00:05:36.174Z","updated_at":"2025-08-17T00:05:40.306Z","avatar_url":"https://github.com/simonrolph.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n# recorderFeedback\n\n**recorderFeedback** is an R package for generating personalised, data-driven feedback, originally designed for citizen science wildlife recording but adaptable to other domains. The package provides tools to set up a feedback workflow, load data, generate content, and distribute feedback to recipients.\n\n## Features\n\n- **Project Initialisation**: Quickly scaffold a new feedback project with all necessary files and folders.\n- **Data Loading**: Import recipient and observation data from configurable sources.\n- **Computation**: Run custom analyses or summaries on your data before generating feedback.\n- **Content Rendering**: Create personalised feedback documents for each recipient using RMarkdown templates.\n- **Batch Processing**: Automate feedback generation for multiple recipients.\n- **Email Dispatch**: Send feedback via email using SMTP.\n\nPackage functions are prefixed with `rf_`.\n\n## Installation\n\nInstall from GitHub using `devtools`:\n\n```r\ndevtools::install_github(\"yourusername/recorderFeedback\")\n```\n\n## Quick Start\n\n```{r quick_start}\nlibrary(recorderFeedback)\n\n#initialise a new project\nrf_init(path = \"example\")\nconfig \u003c- config::get()\n\n#get recipients\nrf_get_recipients()\nknitr::kable(head(read.csv(config$recipients_file)))\n\n#get data\nrf_get_data()\nknitr::kable(head(read.csv(config$data_file)))\n\n#verify the data is all good\nrf_verify_data(T)\n\n#render a single feedback item\nrf_render_single(recipient_id = 1)\n\n\n# run the pipeline\nbatch_id \u003c- \"test_batch\"\nrf_generate(batch_id)\n\n#view the meta table\nmeta_table \u003c- read.csv(file.path(\"renders\",batch_id,\"/meta_table.csv\"))\nknitr::kable(head(meta_table))\n\n#verify the batch\nrf_verify_batch(batch_id)\n#view content\n#rf_view_content(batch_id = batch_id,recipient_id = 3)\n\n#peer into the contents of one of the renders\nprint(readLines(meta_table$file[1]))\n\n#send the emails\n#rf_dispatch_smtp(batch_id)\n```\n\n## Workflow Overview\n\n1. **Initialise Project**: Use `rf_init()` to create a new project structure.\n2. **Configure**: Edit the configuration file to set paths and options.\n3. **Load Data**: Import recipients and data using provided functions.\n4. **Compute**: Optionally process data for summaries or statistics.\n5. **Render Feedback**: Generate personalised feedback documents.\n6. **Distribute**: Send feedback via email or other channels.\n\n## Key terms:\n\n - Recipient: someone to receive feedback\n - Focal/background: whether the data relates to the recipient (focal), or not (background)\n - Template: a RMarkdown document defining how the data is manipulated and visualised\n - Computations: calculations or other processing done on the raw data prior to rendering them template\n\n## Configuration\n\n### General\n\n`config.yml`\n\n### Data sources (recipients)\n\n`scripts/get_recipients.R`\n\n### Data sources (records)\n\n`scripts/get_data.R`\n\n### Content (R)\n\n`templates/content.Rmd`\n`templates/email_format.R`\n\n### Look and feel (HTML+CSS)\n\n`templates/template.html`\n\n\n### Pipeline\n\n`_targets.R`\n`run_pipeline.R`\n\n\n```{r cleanup, echo = FALSE}\nsetwd(\"C:/Users/simrol/OneDrive - UKCEH/R_onedrive/R_2025/recorderFeedback\")\nunlink(\"example\", recursive=TRUE)\nunlink(\"example\")\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonrolph%2Frecorderfeedback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonrolph%2Frecorderfeedback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonrolph%2Frecorderfeedback/lists"}