YAMLResume

Types

This document outlines the TypeScript types that define the structure of a resume with YAMLResume. As a TypeScript project, YAMLResume employs static typing to ensure data consistency. This file provides an overview of the core data structures used to represent resume information, including personal details, education, experience, skills and more.

You can check types/index.ts for the source of truth details.

Understanding these types is essential for contributors and developers who want to customize or extend YAMLResume's functionality.

This document serves as a definitive reference for users seeking to create a valid YAMLResume, clarifying the distinction between optional and mandatory fields. To guarantee successful compilation within YAMLResume, a minimal resume must incorporate the following essential fields:

  • content.basics.name
  • education[number].area
  • education[number].degree
  • education[number].institution
  • education[number].startDate

So theoretically a minimum viable resumes looks like the following:

content:
  basics:
    name: Xiao Hanyu
  education:
    - area: Computer Science and Technology
      degree: Bachelor
      institution: Zhejiang University
      startDate: Sep, 2007

Resume

Defines the overall resume structure, including content and layout.

PropTypeRequiredDescription
contentContent✅Defines the structure for the entire resume content.
layouts?Layouts⬜Defines the overall layout configuration.
locale?Locale⬜Defines the overall locale configuration.

Here is a high-level diagram of the resume structure:

Content

Defines the structure for the entire resume content.

PropTypeRequiredDescription
basicsBasicsItem✅Represents the core personal and contact information.
educationEducationItem[]✅Contains a collection of educational experiences.
awards?AwardItem[]⬜Contains a collection of awards and recognitions.
certificates?CertificateItem[]⬜Contains a collection of certifications and credentials.
interests?InterestItem[]⬜Contains a collection of interests, hobbies, or personal activities.
languages?LanguageItem[]⬜Contains a collection of language proficiencies.
location?LocationItem⬜Contains location information.
projects?ProjectItem[]⬜Contains a collection of projects.
profiles?ProfileItem[]⬜Contains a collection of online profiles.
publications?PublicationItem[]⬜Contains a collection of publications.
references?ReferenceItem[]⬜Contains a collection of references.
skills?SkillItem[]⬜Contains a collection of skills.
volunteer?VolunteerItem[]⬜Contains a collection of volunteer experiences.
work?WorkItem[]⬜Contains a collection of work experiences and employment history.

AwardItem

Represents a single award, honor, or recognition received.

PropTypeRequiredDescription
awarderstring✅The organization or entity that gave the award.
titlestring✅The name or title of the award.
date?string⬜The date the award was received (e.g., "2020", "Oct 2020").
summary?string⬜A short description or details about the award.

BasicsItem

Represents the core personal and contact information.

PropTypeRequiredDescription
namestring✅Full name.
email?string⬜Email address.
headline?string⬜A brief professional headline or title (e.g., "Software Engineer").
phone?string⬜Phone number.
summary?string⬜A professional summary or objective statement.
url?string⬜Personal website or portfolio URL.

CertificateItem

Represents a single certification, credential, or professional qualification.

PropTypeRequiredDescription
issuerstring✅The organization that issued the certificate.
namestring✅The name of the certificate.
date?string⬜The date the certificate was obtained (e.g., "2021", "Nov 2021").
url?string⬜URL related to the certificate (e.g., verification link).

EducationItem

Represents a single educational experience or degree program.

PropTypeRequiredDescription
areastring✅Area of study (e.g., "Computer Science").
degreeDegree✅The type of degree obtained.
institutionstring✅Name of the institution.
startDatestring✅Start date of study (e.g., "2016", "Sep 2016").
courses?string[]⬜List of courses taken.
endDate?string⬜End date of study (e.g., "2020", "May 2020"), empty implies "Present".
summary?string⬜Description of accomplishments or details.
score?string⬜GPA or academic score.
url?string⬜URL related to the institution or degree.

InterestItem

Represents a single interest, hobby, or personal activity.

PropTypeRequiredDescription
namestring✅Name of the interest category (e.g., "Reading", "Photography").
keywords?string[]⬜Keywords related to the interest.

LanguageItem

Represents a single language proficiency item.

PropTypeRequiredDescription
fluencyFluency✅The level of proficiency of the language.
languageLanguage✅The language.
keywords?string[]⬜Specific keywords related to language skills (e.g., "Translation").

LocationItem

Represents location and address information.

PropTypeRequiredDescription
citystring✅City name.
address?string⬜Street address.
country?Country⬜Country code or name.
postalCode?string⬜Postal or ZIP code.
region?string⬜State, province, or region.

ProfileItem

Represents a single online profile or social media presence.

PropTypeRequiredDescription
networkNetwork✅The name of the network or platform.
usernamestring✅The username on the platform.
url?string⬜The URL of the profile.

ProjectItem

Represents a single project, portfolio piece, or technical work.

PropTypeRequiredDescription
namestring✅Name of the project.
startDatestring✅Start date of the project (e.g., "2021", "Jan 2021").
summarystring✅Detailed accomplishments for the project.
description?string⬜Description of the project.
endDate?string⬜End date of the project (e.g., "2022", "Jul 2022").
keywords?string[]⬜Keywords or technologies used in the project.
url?string⬜URL related to the project (e.g., repository, live demo).

PublicationItem

Represents a single publication, research work, or academic paper.

PropTypeRequiredDescription
namestring✅Name or title of the publication.
publisherstring✅Publisher of the work.
releaseDate?string⬜Date of publication (e.g., "2023", "Mar 2023").
summary?string⬜Summary or abstract of the publication.
url?string⬜URL related to the publication (e.g., DOI, link).

ReferenceItem

Represents a single professional reference or recommendation.

PropTypeRequiredDescription
namestring✅Name of the reference.
summarystring✅A brief note about the reference.
email?string⬜Email address of the reference.
phone?string⬜Phone number of the reference.
relationship?string⬜Relationship to the reference (e.g., "Former Manager").

SkillItem

Represents a single skill, competency, or technical ability.

PropTypeRequiredDescription
levelLevel✅Proficiency level in the skill.
namestring✅Name of the skill.
keywords?string[]⬜Specific keywords or technologies related to the skill.

VolunteerItem

Represents a single volunteer experience or community service.

PropTypeRequiredDescription
organizationstring✅Name of the organization.
positionstring✅Role or position held.
startDatestring✅Start date of the volunteer work (e.g., "2019", "Jun 2019").
summarystring✅Summary of responsibilities or achievements.
endDate?string⬜End date of the volunteer work (e.g., "2020", "Dec 2020").
url?string⬜URL related to the organization or work.

WorkItem

Represents a single work experience or employment position.

PropTypeRequiredDescription
namestring✅Name of the company or employer.
positionstring✅Job title or position held.
startDatestring✅Start date of employment (e.g., "2021", "Apr 2021").
summarystring✅Summary of responsibilities and accomplishments.
endDate?string⬜End date of employment (e.g., "2023", "Aug 2023").
keywords?string[]⬜Keywords related to the role or technologies used.
url?string⬜URL related to the company or work.

Locale

Defines locale settings for internationalization and localization.

PropTypeRequiredDescription
language?LocaleLanguage⬜The selected language for the resume content and template terms.

Layouts

Array of layout items supporting multiple output formats.

PropTypeRequiredDescription
layouts[]DocxLayout | HtmlLayout | LatexLayout | MarkdownLayout⬜Multiple output layout configurations.

Common Layout Types

Margins

Defines page margin settings for document layout.

PropTypeRequiredDescription
top?string⬜Top margin value (e.g., "2.5cm").
bottom?string⬜Bottom margin value (e.g., "2.5cm").
left?string⬜Left margin value (e.g., "1.5cm").
right?string⬜Right margin value (e.g., "1.5cm").
Sections

Defines section alias settings for customizing section names.

PropTypeRequiredDescription
aliases?Record<SectionID, string>⬜Custom aliases for section names, overriding default translations.
order?OrderableSectionID[]⬜Custom order for sections in the final output.

HtmlLayout

HTML layout configuration.

PropTypeRequiredDescription
engine'html'✅The engine to generate the resume.
advanced?HtmlAdvanced⬜Defines advanced configuration options.
sections?Sections⬜Defines section customization settings.
template?HtmlTemplate⬜Defines the selected template.
typography?HtmlTypography⬜Defines typography settings for document formatting.
HtmlAdvanced

Defines advanced HTML configuration options.

PropTypeRequiredDescription
showIcons?boolean⬜Whether to display icons for links and profiles.
title?string⬜Custom title for the HTML document.
footer?string⬜Custom footer for the HTML document.
description?string⬜Meta description for the HTML document.
keywords?string⬜Meta keywords for the HTML document.
HtmlTypography

Defines HTML typography settings for document formatting.

PropTypeRequiredDescription
fontSize?HtmlFontSize⬜Base font size for the document.
fontFamily?string⬜A comma-separated list of font families to use.
lineSpacing?LineSpacing⬜Line spacing for the document.

LatexLayout

LaTeX layout configuration.

PropTypeRequiredDescription
engine'latex'✅The engine to generate the resume.
advanced?LatexAdvanced⬜Defines advanced configuration options.
page?LatexPage⬜Defines page-level settings for document presentation.
sections?Sections⬜Defines section customization settings.
template?LatexTemplate⬜Defines the selected template.
typography?LatexTypography⬜Defines typography settings for document formatting.
LatexAdvanced

Defines advanced latex configuration options.

PropTypeRequiredDescription
fontspec?{ numbers?: LatexFontspecNumbers }⬜LaTeX fontspec package configurations.
showIcons?boolean⬜Whether to display icons for links and profiles.
showUrls?boolean⬜Whether to show raw URLs or hide them behind reasonable text.
LatexPage

Defines latex page-level settings for document presentation.

PropTypeRequiredDescription
margins?Margins⬜Defines page margin settings.
paperSize?PaperSize⬜Defines the paper size.
showPageNumbers?boolean⬜Whether to display page numbers.
LatexTypography

Defines latex typography settings for document formatting.

PropTypeRequiredDescription
fontSize?LatexFontSize⬜Base font size for the document.
fontFamily?string⬜A comma-separated list of font families to use.
lineSpacing?LineSpacing⬜Line spacing for the document.
links?{ underline?: boolean }⬜Link styling settings.

MarkdownLayout

Markdown layout configuration.

PropTypeRequiredDescription
engine'markdown'✅The engine to generate the resume.
sections?Sections⬜Defines section customization settings.

DocxLayout

DOCX layout configuration.

PropTypeRequiredDescription
engine'docx'✅The engine to generate the resume.
advanced?DocxAdvanced⬜Defines advanced configuration options.
page?DocxPage⬜Defines page-level settings for document presentation.
sections?Sections⬜Defines section customization settings.
template?DocxTemplate⬜Defines the selected template.
typography?DocxTypography⬜Defines typography settings for document formatting.
DocxAdvanced

Defines advanced DOCX configuration options.

PropTypeRequiredDescription
showIcons?boolean⬜Whether to display icons for links and profiles.
showUrls?boolean⬜Whether to show raw URLs or hide them behind reasonable text.
DocxPage

Defines DOCX page-level settings for document presentation.

PropTypeRequiredDescription
margins?Margins⬜Defines page margin settings.
paperSize?DocxPaperSize⬜Defines the paper size.
showPageNumbers?boolean⬜Whether to display page numbers.
DocxTypography

Defines DOCX typography settings for document formatting.

PropTypeRequiredDescription
fontSize?DocxFontSize⬜Base font size for the document.
fontFamily?string⬜A comma-separated list of font families to use.
lineSpacing?LineSpacing⬜Line spacing for the document.

Enum Types

Content Enums

Country

A union type for all possible countries and regions in the world.

Degree

A union type for all possible degrees.

  • Associate
  • Bachelor
  • Diploma
  • Doctor
  • High School
  • Master
  • Middle School

Fluency

A union type for all possible language fluency levels.

  • Elementary Proficiency
  • Full Professional Proficiency
  • Limited Working Proficiency
  • Minimum Professional Proficiency
  • Native or Bilingual Proficiency

Language

A union type for all supported languages.

Level

A union type for all possible skill proficiency levels.

  • Advanced
  • Beginner
  • Expert
  • Intermediate
  • Master
  • Novice

Network

A union type for all possible social network options.

Layout Enums

DocxFontSize

A union type for all possible DOCX font size options.

  • 10pt - 10pt font size (default)
  • 10.5pt - 10.5pt font size
  • 11pt - 11pt font size
  • 11.5pt - 11.5pt font size
  • 12pt - 12pt font size

DocxPaperSize

A union type for all possible DOCX paper size options.

  • a4 (default)
  • letter

DocxTemplate

A union type for all possible DOCX template options.

See also: templates

  • calm

HtmlFontSize

A union type for all possible HTML font size options.

HTML engine supports font sizes from 14px to 20px:

  • 14px, 15px, 16px (default), 17px, 18px, 19px, 20px

HtmlTemplate

A union type for all possible HTML template options.

See also: templates

  • calm

LatexFontSize

A union type for all possible LaTeX font size options.

For now only 3 options are supported:

  • 10pt - 10pt font size (default)
  • 11pt - 11pt font size
  • 12pt - 12pt font size

LineSpacing

A union type for all possible line spacing options.

These semantic values follow Tailwind CSS's leading scale:

  • tight - Compact spacing for fitting more content
  • snug - Slightly more space than tight
  • normal - Balanced readability (default)
  • relaxed - More breathing room between lines
  • loose - Very spacious layout

LatexFontspecNumbers

A union type for all possible latex fontspec numbers options.

  • Auto - allowing the style to be automatically determined based on the selected LocaleLanguage (default)
  • Lining - standard lining figures (default for CJK languages)
  • OldStyle - old style figures with varying heights (default for Latin languages)

LatexTemplate

A union type for all possible LaTeX template options.

See also: templates

  • moderncv-banking
  • moderncv-casual
  • moderncv-classic

PaperSize

A union type for all possible LaTeX paper size options.

  • a4 (default)
  • letter

Locale Enums

LocaleLanguage

A union type for all possible locale languages.

See also: multi-languages

  • en
  • es
  • zh-hans
  • zh-hant-hk
  • zh-hant-tw
Edit on GitHub

Last updated on

On this page