Skip to content

dzmitryk-dev/cv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CV Generator

A modern, modular CV generation system that creates professional HTML and PDF CVs from structured Markdown and YAML content. Features a VS Code dark theme aesthetic with print-optimized styling.

Project Structure

cv/
β”œβ”€β”€ build_html.sh          # Script to generate HTML CV from content files
β”œβ”€β”€ Makefile               # Build targets for HTML, PDF, Docker image, and cleanup
β”œβ”€β”€ README.md              # This documentation
β”œβ”€β”€ content/               # CV content files
β”‚   β”œβ”€β”€ meta.yml           # Basic metadata (title, avatar path)
β”‚   β”œβ”€β”€ contacts.yml       # Personal information (name, role, location, contacts)
β”‚   β”œβ”€β”€ skills.yml         # Skills organized in categories
β”‚   β”œβ”€β”€ summary.md         # Professional summary
β”‚   β”œβ”€β”€ achievements.md    # Key achievements and highlights
β”‚   β”œβ”€β”€ responsibilities.md # Professional responsibilities and duties
β”‚   β”œβ”€β”€ strengths.md       # Core professional strengths and capabilities
β”‚   β”œβ”€β”€ experience.md      # Work experience history
β”‚   β”œβ”€β”€ education.md       # Education background
β”‚   β”œβ”€β”€ languages.md       # Language proficiencies
β”‚   └── avatar.webp        # Profile picture
β”œβ”€β”€ docker/                # Docker setup for containerized generation
β”‚   β”œβ”€β”€ Dockerfile         # Docker image definition
β”‚   └── scripts/
β”‚       β”œβ”€β”€ build.sh       # Build Docker image
β”‚       └── generate.sh    # Generate CV using Docker
β”œβ”€β”€ pdf/                   # PDF generation tools
β”‚   └── generate-pdf.js    # Node.js script using Puppeteer for PDF creation
└── template/              # HTML template and styling
    β”œβ”€β”€ cv.html            # Pandoc HTML template
    └── style.css          # CSS styles (screen + print media queries)

CV Content Structure

The CV content is organized into modular files for easy maintenance and updates:

Core Metadata Files (YAML)

  • meta.yml: Contains basic page metadata
    • title: Browser tab title
    • avatar: Path to profile image
  • contacts.yml: Personal and contact information
    • name: Full name
    • role: Professional title
    • location: City and country
    • email, phone: Contact details
    • github, linkedin: Professional profiles (without https://)
  • skills.yml: Technical and professional skills organized in categories
    • Structured as skill_categories with name and items arrays

Content Sections (Markdown)

  • summary.md: Brief professional summary (plain text)
  • achievements.md: Key accomplishments and highlights (Markdown formatted)
  • responsibilities.md: Key professional responsibilities and duties (Markdown formatted)
  • strengths.md: Core professional strengths and capabilities (Markdown formatted)
  • experience.md: Work experience with job titles, companies, dates, and descriptions (Markdown formatted)
  • education.md: Educational background and qualifications (Markdown formatted)
  • languages.md: Language proficiencies and levels (Markdown formatted)

Assets

  • avatar.webp: Profile picture (WebP format recommended for smaller file size)

How to Generate CV

Prerequisites

For HTML Generation

  • Pandoc: Required for converting Markdown to HTML

    # macOS
    brew install pandoc
    
    # Ubuntu/Debian
    sudo apt install pandoc
    
    # Windows (with Chocolatey)
    choco install pandoc

For PDF Generation (Local)

  • Node.js (v14+): Required for PDF generation

  • Puppeteer: Install dependencies

    npm install puppeteer

For PDF Generation (Docker - Recommended)

  • Docker: For containerized PDF generation (includes all dependencies)

Generate HTML CV

Option 1: Direct script execution

./build_html.sh
  • Generates dist/cv.html with current date
  • Optional: Add --open flag to automatically open in browser

Option 2: Using Makefile

make html

Generate PDF CV

Option 1: Using Docker (Recommended)

# Build Docker image (one-time setup)
make image

# Generate both HTML and PDF
make pdf

Option 2: Local generation

# First generate HTML
./build_html.sh

# Then generate PDF
node pdf/generate-pdf.js

Preview and Print

  • Web preview: Open dist/cv.html in any modern browser
  • Print preview: Use browser's print function (Ctrl+P/Cmd+P) for A4 PDF layout
  • Direct PDF: Generated files are saved in dist/ directory

GitHub Actions Automation

This repository includes automated CV generation and release publishing using GitHub Actions.

Creating Releases

Method 1: Git Tags (Recommended)

git tag v1.0
git push origin v1.0

Method 2: Manual Trigger

  1. Go to Actions tab in your repository
  2. Select "Generate CV and Create Release"
  3. Click "Run workflow"

What You Get

  • Automatic PDF generation using your Docker setup
  • GitHub release with downloadable dzmitry_kalianchuk_cv.pdf
  • Direct download link: https://github.com/USER/REPO/releases/latest/download/dzmitry_kalianchuk_cv.pdf

Testing

  • Pull requests automatically test CV generation
  • All pushes to main/master trigger build validation
  • Build artifacts available for download from Actions tab## Maintenance Guide

Updating Content

  1. Personal Information: Edit content/contacts.yml
  2. Skills: Modify content/skills.yml (add/remove categories or items)
  3. Professional Summary: Update content/summary.md
  4. Achievements: Update content/achievements.md
  5. Responsibilities: Edit content/responsibilities.md
  6. Strengths: Modify content/strengths.md
  7. Experience: Edit content/experience.md with new positions or updates
  8. Education: Modify content/education.md
  9. Languages: Edit content/languages.md
  10. Profile Picture: Replace content/avatar.webp

File Organization Best Practices

  • Keep content files focused on their specific sections
  • Use Markdown formatting for rich text in experience, education, and achievements
  • Maintain consistent date formats (e.g., "2020 - Present" or "2018 - 2022")
  • Update the generation date automatically via build scripts

Build System

  • HTML Generation: Uses Pandoc with custom template and variable injection
  • PDF Generation: Leverages Puppeteer for headless Chrome rendering with background preservation
  • Docker: Provides consistent environment across different systems
  • Makefile: Offers convenient targets for common operations

Dependencies

  • Runtime: Pandoc for HTML, Node.js/Puppeteer for PDF
  • Development: Docker for containerized builds
  • Assets: WebP images for optimized file sizes

Troubleshooting

  • HTML generation fails: Ensure Pandoc is installed and all content files exist
  • PDF generation fails: Check Node.js version and Puppeteer installation
  • Docker issues: Verify Docker is running and image is built
  • Styling issues: Check browser compatibility and print CSS

Version Control

  • Commit content changes separately from build artifacts
  • The dist/ folder is typically gitignored (generated files)
  • Keep template and build scripts under version control

Features

  • Modular Content: Separate files for easy maintenance and updates
  • VS Code Theme: Dark theme for screen, professional for print
  • Responsive Design: Works on desktop and mobile devices
  • Print Optimized: A4 format with proper margins and print-friendly styling
  • Automated Builds: Scripts and Makefile for consistent generation
  • Docker Support: Containerized PDF generation for reproducibility
  • Background Preservation: PDF generation maintains all visual styling
  • Semantic HTML: Proper HTML5 structure for accessibility

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors