resume-generator

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2026 License: MIT Imports: 2 Imported by: 0

README

Resume Generator

Introduction

Resume Generator is a CLI-focused toolkit for turning structured configuration files into polished resumes. It supports multiple template formats and ships with a flexible template system so you can generate professional PDFs from LaTeX or HTML templates using YAML, JSON, or TOML data.

Features

Core Capabilities
  • Multiple Template Types: Generate PDFs from LaTeX or HTML templates with the same data model
  • Data-Only Inputs: Provide resume content as YAML, JSON, or TOML; the CLI selects templates and output targets
  • Template System: Modular templates with embedded assets; customize or create new templates per project
  • Robust Path Resolution: Works from any directory, supports ~, relative paths, and dated output workspaces
Technical Features
  • CLI Commands: Validate inputs, preview data, list templates, generate outputs, and export JSON schema
  • Schema Generation: Generate JSON Schema for IDE integration and validation

Prerequisites

For CLI Usage
  • Go 1.21+
  • Chromium/Chrome (for HTML → PDF conversion)
  • TeX Live or compatible LaTeX engine (for LaTeX → PDF conversion)
HTML → PDF Tool Selection

The generator auto-detects common converters (wkhtmltopdf, ungoogled-chromium, Chromium, Google Chrome). You can override the detection with the RESUME_HTML_TO_PDF_TOOL environment variable and point at a specific binary or .app bundle:

export RESUME_HTML_TO_PDF_TOOL="/Applications/ungoogled-chromium.app"
just generate

Per-run flags for Chromium-based browsers can still be appended via RESUME_CHROMIUM_FLAGS (for example, to add --no-first-run).

Optional
  • just for helper commands

Getting Started

Quick Start
  1. Clone the Repository

    git clone https://github.com/urmzd/resume-generator.git
    cd resume-generator
    
  2. Build the CLI

    go build -o resume-generator .
    
  3. Generate a Resume

    ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html
    
CLI Usage
  1. Build the Application

    go build -o resume-generator .
    
  2. Generate Resume

    # Generate PDF from an HTML template
    ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html
    
    # Generate with multiple templates (creates separate outputs for each)
    ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html -t modern-latex
    
    # Generate with all available templates (if -t is omitted)
    ./resume-generator run -i assets/example_resumes/software_engineer.yml
    
    # Use comma-separated template names
    ./resume-generator run -i assets/example_resumes/software_engineer.yml -t modern-html,modern-latex
    
    # Custom output root with multiple templates
    ./resume-generator run -i assets/example_resumes/software_engineer.yml -o outputs/custom-run -t modern-html -t modern-latex
    
    # Validate configuration
    ./resume-generator validate assets/example_resumes/software_engineer.yml
    
    # Preview without generation
    ./resume-generator preview assets/example_resumes/software_engineer.yml
    
    # List available templates
    ./resume-generator templates list
    
    # Check available LaTeX engines
    ./resume-generator templates engines
    
  3. Path Resolution

    The CLI now supports flexible path resolution:

    • Relative paths: ./assets/example_resumes/software_engineer.yml, ../data/resume.yml
    • Absolute paths: /Users/name/Documents/resume.yml
    • Home directory: ~/Documents/resume.yml
    • Custom output locations: Specify any directory path for generated artifacts
    • Directory output: Provide a directory, and a dated workspace will be created (with PDF + debug artifacts)
    • Aliases: Use -o/--output-dir (alias --output-root) to control the root output folder

    Examples:

    # Relative input, custom output root
    ./resume-generator run -i assets/example_resumes/software_engineer.yml -o outputs/my_resume
    
    # Absolute paths
    ./resume-generator run -i /path/to/resume.yml -o /path/to/output-directory
    
    # Home directory paths
    ./resume-generator run -i ~/resumes/resume.yml -o ~/Documents/resumes
    
    # Output to directory (creates dated workspace)
    ./resume-generator run -i resume.yml -o ~/Documents/resume-exports
    

    Each run results in structured directories:

    • Single template: outputs/first[_middle]_last/YYYY-MM-DD/<template_name>/first[_middle]_last_resume.pdf
    • Multiple templates: Each template gets its own subdirectory with the same structure
    • Debug artifacts: A matching <resume_basename>_debug/ folder in each template directory preserves the rendered .tex/.html, .log, .aux, and supporting class files.

    For example, when generating with multiple templates:

    outputs/
    └── john_doe/
        └── 2025-10-25/
            ├── modern_html/
            │   ├── john_doe_resume.pdf
            │   └── john_doe_resume_debug/
            │       └── john_doe_resume.html
            └── modern_latex/
                ├── john_doe_resume.pdf
                └── john_doe_resume_debug/
                    ├── john_doe_resume.tex
                    ├── john_doe_resume.log
                    └── john_doe_resume.aux
    

Template Previews

Generated from assets/example_resumes/software_engineer.yml. Run scripts/generate-readme-previews.sh to refresh the PNGs in assets/example_results/.

Modern HTML

Modern HTML Preview

Modern LaTeX

Modern LaTeX Preview

Templates and Data

  • PDF Templates: LaTeX-based templates in templates/*-latex/
  • HTML Templates: Modern responsive templates in templates/*-html/
  • Custom Templates: Create your own templates following the provided patterns

Resume inputs should contain only the data you want to render—template selection, output formats, and destination paths are handled entirely by the CLI or the consuming system.

Use the CLI to explore or apply templates:

# List available templates
./resume-generator templates list

# Generate a resume with a specific template
./resume-generator run -i resume.yml -t custom-template

Customization

To customize your resume, edit the source data file (e.g., software_engineer.yml) with your personal information, experiences, and skills. The tool supports YAML, JSON, and TOML inputs.

Advanced Usage

Using Just Command Runner

The project includes a justfile with convenient commands:

# Install Go dependencies and tools
just init

# Build the CLI binary
just install

# Build and generate a resume (default example input)
just run

# Generate with custom input/output/template
just run assets/example_resumes/software_engineer.yml outputs -t modern-html

The preview helpers look for magick, convert, or pdftoppm. Install ImageMagick or poppler-utils to enable the conversion.

Templates

Built-in templates live in the templates/ directory, one folder per template (for example, templates/modern-html/template.html or templates/modern-latex/template.tex). Each template ships with a config.yml describing its format (html or latex) and any supporting metadata. LaTeX templates bundle their required .cls or helper files directly alongside the template, so no additional classes directory is needed.

Contributing

Contributions to the Resume Generator project are welcome. Please read CONTRIBUTING.md for detailed guidelines on:

  • Development setup and workflow
  • Code style and conventions
  • Testing requirements
  • Pull request process
  • Adding new templates
  • Documentation standards

Submit pull requests for any enhancements, bug fixes, or documentation improvements.

License

This project is licensed under the MIT License. Feel free to use, modify, and distribute the code as per the license terms.

Acknowledgments

Thanks to all the contributors who have helped in building and maintaining this tool. Special thanks to the LaTeX community for the underlying typesetting system.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL