Skip to content

curriculr

0.3.0Package record

Data-Driven CVs with 'Quarto' and 'Typst'

0packages depend
1.9Kdownloads / year
91.8%test coverage
13/13flavors OK

Overview

About

Provides tools for producing data-driven curriculum vitae documents from structured data stored in an Excel workbook. The core workflow reads CV content from a workbook, converts it into 'Typst' layout blocks, and renders a polished PDF via the 'Quarto' publishing system. Includes functions for reading and cleaning CV data, building 'Typst' section headings and entries, rendering CV sections from data frames, and scaffolding new CV projects with a standard folder structure and template workbook. Designed to separate content from layout: CV data lives in the spreadsheet, rendering configuration lives in 'Quarto', and transformation logic lives in small, reusable R functions. See the 'Typst' typesetting system at https://typst.app and the 'Quarto' publishing system at https://quarto.org. Inspired by the 'vitae' package https://CRAN.R-project.org/package=vitae and the 'Awesome CV' LaTeX template https://github.com/posquit0/Awesome-CV.

Changes in 0.3.0

Breaking changes

  • read_cv_data() now requires the openxlsx2 package instead of readxl. Remove readxl and add openxlsx2 to any explicit dependencies in your own projects that call read_cv_data() directly.
  • create_cv() no longer falls back to a bundled placeholder image when photo = NULL in render mode. Omitting photo now produces a single-column header layout with no image. Supply a path explicitly to restore the two-column layout with a profile photo.

New features

  • **Resume variant.** create_cv() and read_cv_data() gain a variant argument ("cv" or "resume"). When variant = "resume", only rows where include_in_resume is checked in the workbook are included in the rendered output. Every section sheet now carries an include_in_resume column for row-level control.
Show all changes in 0.3.0Hide the rest of the changes in 0.3.0
  • **Font Awesome icons.** create_cv() gains a use_icons argument ("fontawesome" or "none"). When "fontawesome" (the default), contact fields in the CV header are rendered with Font Awesome icons via the Typst @preview/fontawesome package. Fields with no icon equivalent fall back to plain text with a warning. The new exported function cv_contact_line() assembles the contact line and can be called directly in custom templates.
  • **Workbook-controlled theming.** A new theme sheet in the workbook controls fonts, colors, and page layout. Keys map directly to the Typst style block and the Quarto format: typst: YAML block, both of which are now injected by create_cv() via sentinel substitution. If the theme sheet is absent, built-in defaults are used and individual missing keys are filled from defaults, so partial theme sheets are supported.
  • **add_section().** New exported function that adds a new sheet to an existing curriculr workbook and registers it in the sections control sheet. The new sheet is pre-populated with the standard column spine including include_in_resume. The sections row is appended or updated in place without touching the sheet's formatting.
  • **No-photo header layout.** When photo = NULL, CV.qmd now emits a single full-width centered header block instead of a two-column grid with an empty left column.

Improvements

  • read_cv_data() reads the theme sheet as a named character vector keyed by the key column, parallel to the profile sheet. Returns NULL if the sheet is absent.
  • read_cv_data() coerces all section columns to character after import, including numeric year columns and logical boolean columns, giving the rendering pipeline a uniform contract.
  • read_cv_data() gains a .coerce_col() internal helper that normalizes NA strings produced by as.character(NA) back to NA_character_.
  • create_cv() injects variant and use_icons into CV.qmd as Quarto params so the Quarto subprocess applies the same filtering and icon settings as the calling R session.
  • The cv-data-template.xlsx template workbook gains a theme sheet with all twelve default theming keys and a description column for in-workbook documentation. The readme sheet is updated to document the theme sheet and to reflect that include_in_resume is now present on all section sheets.
  • Internal helpers .cv_theme_defaults(), .resolve_theme(), .build_format_block(), .build_typst_theme_block(), and .fa_icon_map() are added to support theming and icon assembly.

Dependency changes

  • openxlsx2 added to Imports.
  • readxl removed from Imports.

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 5.3 min · r-oldrel-windows-x86_64
Status changes
  • OK13 OK2026-08-05
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK13 OK2026-07-03
  • ERROR6 OK, 1 ERROR2026-05-14
Advisories

none known

Documentation

In release 0.3.0
READMEYes · 1,396 wordsVignettesYes · 1 · dynamicNEWSYes · 100% structured · mentions 0.3.0Citation fileYes · computed when R runs itWebsiteYes · pkgdown
Help pages
9 (1 internal)includes a package overview page
Examples that run
0%4 only when donttest examples are enabled (R CMD check --as-cran)
Exported functions with examples
50%
Documented parameters
100%
Return-value docs
100%
Help pages citing references
0%

Downloads

1.9K
CRAN downloads in the past year
Rank #12,363 · ~5/day · ~157/mo
Daily download trend is not available in this view yet.
27930 days
90590 days
1.9K1 year
Compare downloads with other packages →
Also on33 r2u8 autocran

Repository

6Stars
1Forks
2Open issues
0Open PRs
2Releases
46Commits
3Commit identities
46 commits · Last activity 2026-08-31 · 0% stars, 30d · Default branch at 0.3.1.9000, ahead of CRAN 0.3.0 (checked 2026-10-21)
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
1
Median days to close, 50 most recently updated closed PRs
1

Stars over time

2026-05-16 · 12026-09-17 · 6
PracticesBeta

8 development-tooling and community-health practices detected across 5 families in the upstream repository

Checks run against github.com/erwinlares/curriculr on 2026-10-21.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-08-31 · The repository has a site deploy workflow

pkgdown site last built 2026-08-31

Coverage (1)
Coverage reporting (Codecov)
Reproducibility and dev environment (1)
renv
Show all practicesHide 1 practice
Lint, format, editor (1)
RStudio project
How this is detected·Detection ruleset v4 (2026-10-20)

Dependencies

Declared dependencies
12 external dependencies (excludes base and recommended)

Installing curriculr adds 53 packages (31 with compiled code, 38 MB of source tarballs). Heaviest: stringi 11 MB, bslib 5.6 MB, sass 2.9 MB.

Depends (1)
R >= 4.2.0
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (1)
Author, Maintainer since 0.3.0 (2026), Copyright holder
Releases (1)
  • 0.3.0Latest
    2026-05-13 · current release
  • R
    R 4.6.0 released · 2026-04-24

Package metadata

First published
2026-05-13
Total releases
1 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.2.0
Download size
4.3 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("curriculr")

The package provides a citation file that builds its entry when R runs it. Run citation() to see it.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for curriculr version 0.3.0 [Data set]. HJJB, LLC. Data release v2026-10-24. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-24, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy