RenderCV is a $\LaTeX$ CV/resume generator from a JSON/YAML input file. The primary motivation behind the RenderCV is to allow the separation between the content and design of a CV. If you want to see RenderCV in action, you can check out [this YouTube video](https://youtu.be/0aXEArrN-_c?feature=shared).
|[![Classic Theme Example of RenderCV](https://raw.githubusercontent.com/sinaatalay/rendercv/main/docs/assets/images/classic.png)](https://raw.githubusercontent.com/sinaatalay/rendercv/main/examples/John_Doe_ClassicTheme_CV.pdf)|[![Sb2nov Theme Example of RenderCV](https://raw.githubusercontent.com/sinaatalay/rendercv/main/docs/assets/images/sb2nov.png)](https://raw.githubusercontent.com/sinaatalay/rendercv/main/examples/John_Doe_Sb2novTheme_CV.pdf)|[![Moderncv Theme Example of RenderCV](https://raw.githubusercontent.com/sinaatalay/rendercv/main/docs/assets/images/moderncv.png)](https://raw.githubusercontent.com/sinaatalay/rendercv/main/examples/John_Doe_ModerncvTheme_CV.pdf)|[![Engineeringresumes Theme Example of RenderCV](https://raw.githubusercontent.com/sinaatalay/rendercv/main/docs/assets/images/engineeringresumes.png)](https://raw.githubusercontent.com/sinaatalay/rendercv/main/examples/John_Doe_EngineeringresumesTheme_CV.pdf)|
You can find a comprehensive user guide that covers the data model (YAML structure) and adding custom themes in greater detail [here](https://sinaatalay.github.io/rendercv/user_guide).
Writing the content of a CV and designing a CV are separate issues, and they should be treated separately. RenderCV attempts to provide this separation. With this approach, users are encouraged not to worry too much about the appearance of their CV but to concentrate on the content.
You can automatize your CV generation process with RenderCV and version control your CV in a well-structured manner. It will make updating your CV as simple as updating the YAML input file.
- RenderCV is a tool that allows you to separate your CV content from your $\LaTeX$ code. $\LaTeX$ is still there, and you can leverage it by moving your custom $\LaTeX$ CV to RenderCV.
- You might want to version control the content and design of your CV separately without mixing them into each other. You cannot achieve this with $\LaTeX$. If you have a plain $\LaTeX$ CV, changing your design will require you to do almost everything from scratch.
- Updating a YAML file may be easier than updating a $\LaTeX$ file.
- You will have a lot of code duplication if you make your CV in $\LaTeX$ because a CV is a list of sections with lists of entries. With RenderCV, you will have only one $\LaTeX$ code for each entry type, which will be duplicated automatically based on the YAML input.
- Spell checking may be difficult to do in $\LaTeX$. You will need to copy and paste each sentence separately to some other software for spell-checking. With RenderCV, it's one copy-paste.
RenderCV gives you the flexibility required for a CV, but not more. RenderCV forces users to be strict about the content of their CVs, and that's helpful! A CV is a strict and structured document, and you may not want to change that strictness arbitrarily.
You can't make design mistakes with RenderCV, but you can be flexible enough. It supports Markdown syntax, so you can put links anywhere or make your text italic or bold. Additionally, you can specify various design options (margins, colors, font sizes, etc.) in your input file's `design` section.
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.
A detailed user guide can be found [here](https://sinaatalay.github.io/rendercv/user_guide).
Reference to the code can be found [here](https://sinaatalay.github.io/rendercv/reference).
All contributions to RenderCV are welcome! For development, you will need to clone the repository recursively, as TinyTeX is being used as a submodule: