{"id":17912718,"url":"https://github.com/stypox/curricust","last_synced_at":"2025-06-15T12:07:19.480Z","repository":{"id":202719904,"uuid":"706900124","full_name":"Stypox/curricust","owner":"Stypox","description":"Easily manage and generate CVs/Resumes in multiple languages, styles and configurations based on just one set of data","archived":false,"fork":false,"pushed_at":"2024-11-30T18:00:36.000Z","size":1262,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T10:44:04.996Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/Stypox.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2023-10-18T20:51:12.000Z","updated_at":"2025-03-31T15:12:44.000Z","dependencies_parsed_at":"2023-10-26T20:26:25.381Z","dependency_job_id":"ace6f389-de39-4da6-89a7-eb704e4cbbd0","html_url":"https://github.com/Stypox/curricust","commit_stats":null,"previous_names":["stypox/resume-cv-rust","stypox/curricust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Stypox/curricust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stypox%2Fcurricust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stypox%2Fcurricust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stypox%2Fcurricust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stypox%2Fcurricust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Stypox","download_url":"https://codeload.github.com/Stypox/curricust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stypox%2Fcurricust/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259971379,"owners_count":22940012,"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","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":"2024-10-28T19:46:41.338Z","updated_at":"2025-06-15T12:07:19.452Z","avatar_url":"https://github.com/Stypox.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Curricust - CV generator\n\nWrite your curriculum/resume in YAML files, and convert those to a PDF based on a LaTeX template. The YAML-\u003eLaTeX converter is written in Rust, while the LaTeX-\u003ePDF conversion can be done e.g. with `pdflatex`.\n\n\n## Advantages\n\nWriting a CV in YAML allows you to:\n- **version control** the data (e.g. with git), getting access to history\n- **separate the style** from the data\n- try out **different styles** without changing the data\n- easily disable, reorder and change the text length of single sections and items with **saveable configurations**\n- built-in **multilanguage** support in the same file and in single text fields, along with a dictionary for common words\n- **reuse** the same data for other purposes, e.g. to build a website, if you ever needed to (the Rust package is easily extendable)\n\n### Comparison\n\n||version controllable|separate style|try different styles|configs|multilanguage|reusability|\n|---|---|---|---|---|---|---|\n|Web services\u003c/br\u003e\u003csup\u003ee.g. Europass\u003c/sup\u003e|❌|✔️|✔️|❌|🟡|❌|\n|Bare LaTeX|✔️|✔️|✔️|❌|🟡|❌|\n|Curricust|✔️|✔️|✔️|✔️|✔️|✔️|\n\n### Additional features\n\nWith the `--check-links` option the Rust converter will make a GET request to all of the links present in the document, to make sure they all work.\n\n\n## YAML file structure\n\nText fields support basic Markdown, so you can insert links, lists and put emphasis on things.\n\nTake a look at the `example/` folder for an actual example of the rules explained below.\n\n### Text field attributes\n\nAll text fields in the YAML files support attributes to specify the locale (e.g. `en`, `it`) and the display mode (e.g. `short`, `long`) with this syntax: `fieldname-attribute1-attribute2` (e.g. `institution-en-short`). In case there are multiple alternatives for the same text field, the one whose attributes best match the currently active attributes is chosen.\n\nTo specify the currently active attributes, you can use `locale`, `display` in various parts of the YAML files. Moreover you can customize `order` and `visibility`.\nIf you use `locale`, `display`, `order`, `visibility` with a string (e.g. `display: long`) you set the attribute in general, but you can also set it for some particular item id (e.g. `display: { _: long, high-school-item: short }` displays everything in long form except for high school).\n\n### Including other files\n\nFields with nested sub-fields (e.g. `section-education`) can be put in separate files by prepending the field name with `include-`. All `include-` parts support the following fields:\n- `file` (required): the file to include\n- active attribute specifiers: `locale`, `display`, `order`, `visibility` to apply to the included file\n\n### Fields structure\n\nThe root YAML file can contain the following fields. `*` fields are required, but if you don't want anything there just use `\"\"`.\n- active attribute specifiers: `locale`, `display`, `order`, `visibility` to apply from the point they are encountered\n- `dictionary` is a dictionary of key-value pairs (attributes are supported on keys)\n- `header` contains `name`\\*, `career`, `email`, `phone`, `location`, `website`, `github`, `linkedin` and:\n    - `summary` and `skills`, which contain `title`\\* (the title of the section) and `summary`\\*/`skills`\\*\n\nThese fields specify section of different types. They all have a `title`\\*, a `description`, and `items` (a list). The sub-fields in the list below are to be intended as children of `items`:\n- `section-education`: `degree`\\*, `institution`\\*, `when`\\*, `grade`, `details`\n- `section-award`: `name`\\*, `when`\\*, `grade`\n- `section-job`: `role`\\*, `company`\\*, `where`\\*, `when`\\*, `topics`, `details`\n- `section-project`: `name`\\*, `technologies`\\*, `links`, `when`, `details`\n- `section-talk`: `name`\\*, `event`\\*, `when`\\*\n\n\n## build.sh usage\n\n`build.sh` can be used to build a PDF file given the following arguments: the base YAML file, the output LaTeX file to generate, the LaTeX template to use to build the final PDF file. For more information about `build.sh`, run `build.sh --help`.\n\nInternally `build.sh` calls:\n- the Rust module in this repo to turn the YAML files into a LaTeX file (requires having Rust installed)\n- `pdflatex` to convert the generated LaTeX file along with the template to PDF (requires having `texlive` installed)\n\nFor example, to build the example in the `example/` folder with the Developer CV template, the command would be `./build.sh ./example/base.yml ./build/example.tex ./template/developercv.cls`.\n\n\n## Templates\n\nTemplates are `.cls` files to be used directly. They contain no CV data, but only style definitions.\n\nIf you want to create or adapt your own style you need to implement some LaTeX functions. You can take a look a the templates that are already implemented.\n\n### Developer CV\n\nThe [Developer CV](https://www.overleaf.com/latex/templates/cv-developer/rdycxzvvnvcc) found on OverLeaf with a few changes: [developercv.cls](./template/developercv.cls).\n\n![Developer CV](./example/developercv.png)\n\nOn Arch Linux the following `texlive` packages are needed for this template:\n- `texlive-basic` - initial installation\n- `texlive-latexrecommended` - extarticle.cls\n- `texlive-latexextra` - moresize.sty\n- `texlive-fontsextra` (~500MB) - raleway.sty\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstypox%2Fcurricust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstypox%2Fcurricust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstypox%2Fcurricust/lists"}