Generate CV from YAML file
Go to file
Sina Atalay 4abf367039 rename HTML output 2024-06-10 20:52:50 +03:00
.devcontainer update devcontainer.json 2024-04-07 16:57:43 +00:00
.github .github: fix issue templates 2024-05-19 01:08:12 +03:00
docs rename HTML output 2024-06-10 20:52:50 +03:00
examples data_models: fix sample data examples 2024-05-31 20:03:45 +03:00
rendercv rename HTML output 2024-06-10 20:52:50 +03:00
tests rename HTML output 2024-06-10 20:52:50 +03:00
.gitignore update .gitignore 2024-03-12 19:02:12 +01:00
.gitmodules add new TinyTeX as a submodule 2024-05-02 19:33:16 +03:00
LICENSE update LICENSE 2024-03-27 19:23:09 +01:00
README.md update description 2024-06-05 13:40:50 +03:00
mkdocs.yaml docs: add a Google Analytics tracking ID 2024-05-19 13:10:59 +03:00
pyproject.toml update description 2024-06-05 13:40:50 +03:00
schema.json docs: update schema.json 2024-05-31 19:55:37 +03:00

README.md

RenderCV

A \LaTeX CV/resume framework

test coverage docs pypi-version pypi-downloads

RenderCV is a \LaTeX CV/resume framework. It allows you to create a high-quality CV as a PDF from a YAML file with full Markdown syntax support and complete control over the \LaTeX code.

The primary motivation behind the RenderCV is to provide people with a concrete framework that will allow

  • Version controlling a CV's content and design separately in an organized manner.
  • Building an automated pipeline that can generate the CV as PDF, markdown, and PNG files.
  • Making the CV's design uniform and nicely structured without room for human errors.

RenderCV offers built-in \LaTeX and Markdown templates ready to produce high-quality CVs. However, the templates are entirely arbitrary and can easily be updated to leverage RenderCV's capabilities with your custom CV themes.

RenderCV takes a YAML file that looks like this:

cv:
  name: John Doe
  location: Your Location
  email: youremail@yourdomain.com
  sections:
    this_is_a_section_title:
      - This is a type of entry, TextEntry—just a plain string.
      - You can have as many entries as you want under a section.
      - RenderCV offers a variety of entry types, such as TextEntry,
        BulletEntry, EducationEntry, ExperienceEntry, NormalEntry,
        OneLineEntry, PublicationEntry.
      - Each entry type has its own set of attributes and different
        looks.
    my_education_section:
      - institution: Boğaziçi University
        area: Mechanical Engineering
        degree: BS
        start_date: 2000-09
        end_date: 2005-05
        highlights:
          - 'GPA: 3.9/4.0 ([Transcript](https://example.com))'
          - '**Coursework:** Structural Analysis, Thermodynamics,
            Heat Transfer'
    experience:
      ...

Then, it produces one of these PDFs with its corresponding \LaTeX code, markdown file, and images as PNGs. Each of these is an example of one of four built-in themes of RenderCV. Click on images to preview PDFs.

Classic Theme Example of RenderCV Sb2nov Theme Example of RenderCV
Moderncv Theme Example of RenderCV Engineeringresumes Theme Example of RenderCV

It also generates an HTML file so all the content can be pasted into Grammarly or any word processor for spelling and grammar checking.

Grammarly for RenderCV

It also validates the input file, and if there are any problems, it tells users where the problems are and how they can fix them.

CLI of RenderCV

RenderCV comes with a JSON Schema so that the input YAML file can be filled out interactively.

JSON Schema of RenderCV

Quick Start Guide

Either use rendercv-pipeline or follow the steps below.

RenderCV doesn't require a \LaTeX installation; it comes with it!

  1. Install Python (3.10 or newer).
  2. Run the command below in a terminal to install RenderCV.
    pip install rendercv
    
  3. Run the command below to generate a starting input files.
    rendercv new "Full Name"
    
  4. Edit the contents of Full_Name_CV.yaml in your favorite editor (tip: use an editor that supports JSON Schemas). The templates can be modified as well.
  5. Run the command below to generate your CV.
    rendercv render Full_Name_CV.yaml
    

Here, you can find a comprehensive user guide that covers the data model (YAML structure) and command-line interface (CLI) in greater detail.

Motivation

Writing the content of a CV and designing a CV are separate issues that should be treated separately. RenderCV attempts to provide this separation. This approach encourages users to concentrate on the content without getting distracted by the appearance of their CV and vice versa.

RenderCV also provides a general set of utilities that will automate most of the manual work involved in the CV updating process. After updating a single sentence or a date in the YAML input file written in pure English, RenderCV will

  • re-create your \LaTeX file.
  • render a new PDF file.
  • create a new Markdown file.
  • create a new HTML document to be pasted into word processors for spelling and grammar checking.
  • create PNG files for each page.

Why should I bother using RenderCV instead of \LaTeX? I can version-control \LaTeX code too!

RenderCV is not a replacement for \LaTeX, but it's a general set of utilities designed to create and manage \LaTeX CVs. If you're currently using \LaTeX to create your CV, you should try RenderCV. Using your existing \LaTeX themes in RenderCV is very easy.

Here are some advantages of RenderCV over using pure \LaTeX:

  • RenderCV will separate the content of your CV from your \LaTeX code. They will sit in independent files, and RenderCV will use both to generate your CV.
  • You will be able to version-control your design and content separately.
  • Updating your content in a YAML file is easier than updating a complex \LaTeX file.
  • A pure \LaTeX CV will have many code duplications because a CV is a document with a list of sections that contain a list of entries. RenderCV has only one \LaTeX code for each entry type, duplicated automatically based on the YAML input file.
  • Spell-checking is not very straightforward in \LaTeX documents.

Documentation

The source code of RenderCV is well-commented and documented. Reading the source code might be fun as the software structure is explained with docstrings and comments.

The detailed user guide can be found here.

The developer guide can be found here.

Reference to the code can be found here.

The changelog can be found here.

Contributing

All contributions to RenderCV are welcome! For development, you will need to clone the repository recursively, as TinyTeX is being used as a submodule:

git clone --recursive https://github.com/sinaatalay/rendercv.git

All code and development tool specifications are in pyproject.toml. Also, don't forget to read the developer guide.