
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
engineercv
Advanced tools
EngineerCV lets you create resumes using simple YAML files, split content into reusable chunks, and generate multiple variants for different targets.
To get started, run
npx engineercv setup
to start an interactive setup process.
Here are some basic samples:
Single Resume Example
basics:
name: Jane Smith
email: jane.smith@example.com
phone: "+1 (555) 123-4567"
summary: Full-stack developer with expertise in modern web technologies.
output: ./out/jane-smith.pdf
skills:
- name: Languages
keywords:
- JavaScript
- Python
work:
- position: Software Engineer
name: Tech Company
startDate: 2021/01
highlights:
- Built scalable web apps.
Importing Shared Sections
imports:
- ./shared-skills.yml
- ./work-experience.yml
basics:
name: John Doe
output: ./out/john-doe.pdf
Defining Multiple Variants
variants:
company:
- name: John Doe
target: AcmeCorp
mainLanguage: JavaScript
- name: John Doe
target: BetaInc
mainLanguage: TypeScript
output: ./out/{{ target }}.pdf
basics:
name: "{{ name }}"
skills:
- name: Languages
keywords:
- "{{ mainLanguage }}"
EngineerCV is a powerful, flexible Resume/CV generator built on React-PDF. It enables you to create multiple targeted resume variants (for different companies, roles, or privacy levels) from a single source file. Modular YAML/JSON/TS/JS configs, imports, and advanced merging make it easy to split your resume into reusable chunks and generate tailored PDFs for every application scenario.
Schema: The data schema is based on jsonresume.org and mostly follows its conventions, making it easy to migrate or reuse existing resume data.
npm install -g engineercv
This provides the engineercv CLI globally.
engineercv generate "./resume-source/**/*.yml"
This will generate PDFs for all variants defined in your YAML files.
engineercv watch "./resume-source/**/*.yml"
Runs the generator in watch mode for rapid development.
EngineerCV supports a dedicated cover letter theme, allowing you to generate professional cover letters alongside your resume. You can even use variants to create both a resume and cover letter from the same file.
Sample Cover Letter YAML:
output: ./out/cover-letter.pdf
imports:
- ./src/themes/coverletter.tsx
basics:
name: John Doe
subtitle: Senior Software Engineer
subject: Application for Software Engineer Position
letterDate: "{{ date 'dddd, MMMM Do YYYY' }}"
toAddress:
- Hiring Manager
- Tech Company
- 1234 Tech Street
- Karlsruhe, Germany
fromAddress:
- John Doe
- 5678 Developer Lane
- Karlsruhe, Germany
EngineerCV lets you define multiple variants in a single file, so you can generate tailored resumes for different companies, privacy levels, or job types. Each variant can override or extend any part of your resume.
Example: Defining Variants
variants:
privacy:
- name: John Doe
facing: private
email: john.doe@outlook.com
phone: "+11234567890"
- name: John D.
facing: public
email: john.doe+jobsearch@outlook.com
phone: "+999999999"
focus:
- focus: frontend
skills:
- name: Languages
keywords:
- JavaScript
- TypeScript
- focus: backend
skills:
- name: Languages
keywords:
- Java
- Python
output: ../out/variants-{{ facing }}-{{ focus }}.pdf
basics:
name: "{{ name }}"
This will generate a PDF for each combination of privacy and focus (e.g., variants-private-frontend.pdf, variants-public-backend.pdf).
You can split your resume into multiple files and import shared sections, skills, or experience blocks. This makes it easy to reuse content across variants or different resumes.
Example: Importing Shared Sections
imports:
- ./shared-skills.yml
- ./work-experience.yml
name: John Doe
shared-skills.yml
skills:
- name: Languages
keywords:
- JavaScript
- TypeScript
- Python
work-experience.yml
work:
- position: Software Engineer
name: Tech Company
startDate: 2020/01
highlights:
- Developed web applications using React and Node.js.
EngineerCV supports advanced merging helpers for lists and objects, so you can fine-tune how imported or variant data is combined. For example:
skills:
- $id: languages
keywords:
- Java
- Python
- "{{ remove 'JavaScript' }}"
See samples/src/advanced-merging.yml for more details.
src/components/sections/ or src/components/atoms/.defineComponent() to specify schema, render logic, and default styles.src/components/default-components.tsx.View, Text, etc.) for rendering.engineercv/module-globals for access to global helpers.config.components.config.customComponents.src/themes/ directory for full theme replacements.docs/ folder for guides on advanced merging, custom components, ordering, fonts, icons, and more.samples/src/ for example CVs, variants, imports, and custom component usage.EngineerCV also provides an invoice theme, so you can generate invoices using the same modular YAML approach. This is useful for freelancers or anyone needing professional invoices.
Sample Invoice YAML:
output: ./out/invoice.pdf
imports:
- ./src/themes/invoice.tsx
basics:
name: John Doe
date: "2020-01-01"
toAddress:
- Hiring Manager
- Tech Company
- 1234 Tech Street
- Karlsruhe, Germany
shipAddress: "{{ use toAddress }}"
fromAddress:
- John Doe
- 5678 Developer Lane
- Karlsruhe, Germany
body: |
Payment is due within 14 days of receipt of this invoice, on {{ dateadd (date) 14 'd' 'MM/DD/YYYY' }}.
items:
- definition: "{{ use customProducts.hourOfWork }}"
quantity: 6
FAQs
Tool for creating best-practice engineering resumes from YAML files
We found that engineercv demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.