Skip to content

phoinixi/resuml

Repository files navigation

✨ Resuml

Write your resume in YAML. Render it beautifully.

npm version npm downloads license GitHub stars


YAML in → Beautiful resume out

# resume.yaml
basics:
  name: Jane Smith
  label: Senior Software Engineer
  email: jane@example.com
  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 engineers
resuml render --resume resume.yaml --theme stackoverflow --output resume.html

Your 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 resuml

Quick Start

  1. Create a YAML file for your resume (e.g., resume.yaml)
  2. Validate your resume data:
    resuml validate --resume resume.yaml
  3. Convert to JSON:
    resuml tojson --resume resume.yaml --output resume.json
  4. 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: john@example.com
  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.json

Node.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

  1. Validation Errors

    • Ensure your YAML follows the JSON Resume schema
    • Check for proper indentation in your YAML file
    • Verify all required fields are present
  2. Theme Rendering Issues

    • Make sure the theme is properly installed
    • Check if all required theme dependencies are installed
    • Try running with --debug flag for more information
  3. 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

About

Resume as code with YAML https://phoinixi.github.io/resuml/

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Contributors