resuml
v1.3.1
Published
Resume as Code — Generate beautiful resumes from YAML with JSON Resume theme support, validation, PDF export, and a live dev server.
Maintainers
Readme
YAML in → Beautiful resume out
# resume.yaml
basics:
name: Jane Smith
label: Senior Software Engineer
email: [email protected]
summary: >-
Passionate engineer with 8+ years
building scalable distributed systems.
work:
- name: Acme Corp
position: Lead Engineer
startDate: 2020-01-15
highlights:
- Reduced deploy time by 60%
- Led team of 12 engineersresuml render --resume resume.yaml --theme stackoverflow --output resume.htmlYour YAML becomes a polished, professional resume — ready to share, print, or export to PDF.
Why YAML?
| | YAML | JSON |
|---|---|---|
| Comments | ✅ # explain your choices | ❌ Not supported |
| Multi-line strings | ✅ summary: >- block syntax | ❌ Escape everything |
| Readability | ✅ Clean, minimal syntax | ⚠️ Brackets & quotes everywhere |
| Diffing | ✅ Clean git diffs | ⚠️ Noisy diffs |
| Compatibility | ✅ Valid JSON Resume schema | ✅ Native |
YAML is a superset of JSON — your resume stays fully compatible with the JSON Resume ecosystem while being far more pleasant to write and maintain.
Prerequisites
- Node.js >= 20.0.0
- npm >= 10.0.0
Installation
npm install -g resumlQuick Start
- Create a YAML file for your resume (e.g.,
resume.yaml) - Validate your resume data:
resuml validate --resume resume.yaml - Convert to JSON:
resuml tojson --resume resume.yaml --output resume.json - Render with a theme:
resuml render --resume resume.yaml --theme stackoverflow --output resume.html
Commands
| Command | Description |
|---------|-------------|
| validate | Validate resume data against the JSON Resume schema |
| tojson | Convert YAML resume data to JSON format |
| render | Render the resume using a specified theme |
| dev | Start a development server with hot-reload |
Options
| Option | Alias | Description |
|--------|-------|-------------|
| --resume | -r | Input YAML file(s) or directory |
| --output | -o | Output file path |
| --theme | -t | Theme to use for rendering |
| --port | -p | Port for dev server (default: 3000) |
| --language | | Language code for localization (default: en) |
| --debug | | Enable debug mode for detailed errors |
Compatible Themes
Resuml supports themes from the JSON Resume ecosystem. Install a theme, then pass its name to --theme:
npm install jsonresume-theme-stackoverflow
resuml render --resume resume.yaml --theme stackoverflow| Theme | Install | Style |
|-------|---------|-------|
| stackoverflow | npm i jsonresume-theme-stackoverflow | Clean, professional |
| elegant | npm i jsonresume-theme-elegant | Modern, elegant |
| kendall | npm i jsonresume-theme-kendall | Minimal, classic |
| flat | npm i jsonresume-theme-flat | Flat design |
| onepage | npm i jsonresume-theme-onepage | Single page |
Browse all themes at jsonresume.org/themes — any
jsonresume-theme-*package works with resuml.
Examples
For detailed examples and usage instructions, see the examples/README.md file.
Example YAML Structure
basics:
name: John Doe
label: Software Engineer
email: [email protected]
summary: Experienced software engineer...
location:
city: San Francisco
countryCode: US
profiles:
- network: GitHub
url: https://github.com/johndoe
work:
- company: Tech Corp
position: Senior Engineer
startDate: 2020-01
endDate: Present
summary: Led development of...CI/CD: Auto-build on Push
Use GitHub Actions to automatically rebuild your resume when you push changes:
# .github/workflows/resume.yml
name: Build Resume
on:
push:
paths: ['resume.yaml', 'resume/*.yaml']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g resuml
- run: npm install jsonresume-theme-stackoverflow
- run: resuml render --resume resume.yaml --theme stackoverflow --output resume.html
- run: resuml tojson --resume resume.yaml --output resume.json
- uses: actions/upload-artifact@v4
with:
name: resume
path: |
resume.html
resume.jsonNode.js API Usage
You can use resuml programmatically from Node.js:
import {
processResumeData,
loadResumeFiles,
loadTheme,
themeRender
} from 'resuml';
// Load YAML files
const { yamlContents } = await loadResumeFiles('resume.yaml');
// Validate and merge
const resume = await processResumeData(yamlContents);
// Load a theme
const theme = await loadTheme('stackoverflow');
// Render HTML
const html = await theme.render(resume, { locale: 'en' });See the CLI and API for more details.
Troubleshooting
Common Issues
Validation Errors
- Ensure your YAML follows the JSON Resume schema
- Check for proper indentation in your YAML file
- Verify all required fields are present
Theme Rendering Issues
- Make sure the theme is properly installed
- Check if all required theme dependencies are installed
- Try running with
--debugflag for more information
Development Server Issues
- Ensure the specified port is available
- Check if you have proper permissions to access the port
- Try a different port if the default is blocked
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
ISC
