## Technologies and Tools This repository primarily utilizes the following technologies and tools: - R: The main programming language used for development. - tidyverse: A collection of R packages designed for data science. - knitr and kableExtra: Packages for dynamic report generation in R. - lubridate: For date-time manipulation. - pagedown and staplr: Used for creating and manipulating PDF files. - pdftools: For handling PDF files. - GitHub Actions: Used for CI/CD processes. - Docker: Containers are used in GitHub Actions workflows. - devtools: An R package for development tasks. - act: Local execution of GitHub Actions. - actionlint: Static analysis tool for GitHub Actions workflows. ## Functionality The repository hosts the AutoPayments project, an R package developed to automate the calculation and documentation of payments for METRC studies. The package facilitates: - Generating detailed payment reports and creating corresponding PDF invoices for each study site. - Handling data via stateless or stored methods to ensure flexibility in managing payment data. - Customizing invoice templates to accommodate different study requirements. ## Relevant Skills The codebase demonstrates advanced skills in several areas: - Functional Programming in R: The use of `tidyverse` for data manipulation and `lubridate` for date-time calculations are prominent, reflecting a strong grasp of functional programming paradigms. - PDF Manipulation: The use of `pagedown`, `staplr`, and `pdftools` to generate and manipulate PDF documents showcases proficiency in handling file formats programmatically. - CI/CD Implementation: The implementation of GitHub Actions for continuous integration and deployment illustrates skills in automation and workflow optimization. - Containerization: Using Docker within GitHub Actions indicates knowledge in software containerization, ensuring consistency across development environments. Example of functional programming in R: \`\`\`r all_payments <- all_payments %>% filter(DatePayment==format(Sys.Date(),"%m/%d/%Y")) \`\`\` This snippet uses `dplyr` from `tidyverse` to filter payment data, showcasing the application of chaining operations. ## Example Code The use of Docker in GitHub Actions for running R scripts: \`\`\`yaml container: image: eliaswf/jammy-chromedriver-python-r:latest \`\`\` This demonstrates integrating R within a Docker container setup, ensuring that the CI environment is consistent and controlled. Example of PDF invoice generation using `staplr`: \`\`\`r set_fields(path, front_page, fields, flatten=TRUE) \`\`\` This function call modifies a PDF template to include dynamic content, illustrating the application of programming skills to document automation. ## Notable Achievements - Optimization: The caching mechanism in the GitHub Actions workflows is an optimization that speeds up the CI process by reusing previously downloaded or built resources. - Innovative Problem-Solving: The project includes a method for local testing of GitHub Actions (`act`), allowing developers to debug workflows locally without pushing numerous commits, demonstrating a practical solution to a common problem in CI/CD development. - Customizable Outputs: The ability to customize invoice templates based on study-specific metadata provides a tailored user experience, which is crucial for client-facing applications. These components not only reflect technical proficiency but also a thorough understanding of the project's domain-specific requirements, making them notable achievements in a software development context.


© 2024 Elias Weston-Farber. All rights reserved.