sinaatalay / rendercv

A LaTeX CV/Resume Framework
http://docs.rendercv.com
MIT License
722 stars 62 forks source link
cv cv-builder cv-generator cv-template latex python resume resume-builder resume-generator resume-template

RenderCV

*A* $\LaTeX$ *CV/Resume Framework* [![test](https://github.com/sinaatalay/rendercv/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/sinaatalay/rendercv/actions/workflows/test.yaml) [![coverage](https://coverage-badge.samuelcolvin.workers.dev/sinaatalay/rendercv.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/sinaatalay/rendercv) [![docs](https://img.shields.io/badge/docs-mkdocs-rgb(0%2C79%2C144))](https://docs.rendercv.com) [![pypi-version](https://img.shields.io/pypi/v/rendercv?label=PyPI%20version&color=rgb(0%2C79%2C144))](https://pypi.python.org/pypi/rendercv) [![pypi-downloads](https://img.shields.io/pepy/dt/rendercv?label=PyPI%20downloads&color=rgb(0%2C%2079%2C%20144))](https://pypistats.org/packages/rendercv)

RenderCV allows you to create a high-quality CV as a PDF from a YAML input file. It supports Markdown syntax and gives you complete control over the $\LaTeX$ code.

The primary motivation behind RenderCV is to provide a concrete framework that allows:

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 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 may 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: 2024-09
        end_date: 2029-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, HTML file, and images as PNGs. Each of these is an example of one of 4 built-in themes of RenderCV. Click on the images below to preview PDF files.

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

The contents of the HTML file can be pasted into Grammarly or any word processor for spelling and grammar checking.

Grammarly for RenderCV

It also validates the input file. 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 YAML input file can be filled out interactively.

JSON Schema of RenderCV

Quick Start Guide

Either use rendercv-pipeline or follow the steps below.

  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 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).
  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 YAML input file 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 set of utilities that automate most of the manual work involved in the CV updating process. After updating a single sentence or date in the YAML input file written in pure English, RenderCV will:

Why use RenderCV instead of $\LaTeX$? I can version-control $\LaTeX$ code too!

RenderCV is not a replacement for $\LaTeX$. It is a 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.

Advantages of RenderCV over using pure $\LaTeX$:

Documentation

Contributing

All contributions to RenderCV are welcome! To get started, please read the developer guide.