YAMLResume

Schéma Zod

YAMLResume adopte zod pour valider les données de CV en cours d'exécution.

Ce document présente tous les schémas zod utilisés dans YAMLResume. Si vous êtes intéressé par les détails d'implémentation, vous pouvez trouver le code source ici.

Schéma Resume

Définit la validation de la structure globale du CV, incluant la validation du contenu et de la mise en page.

PropTypeRequis
contentContentSchema✅
layouts?LayoutsSchema⬜
locale?LocaleSchema⬜

ContentSchema

Définit la structure de validation pour l'ensemble du contenu du CV.

PropTypeRequis
basicsBasicsItemSchema✅
educationEducationItemSchema[]✅
awards?AwardItemSchema[]⬜
certificates?CertificateItemSchema[]⬜
interests?InterestItemSchema[]⬜
languages?LanguageItemSchema[]⬜
location?LocationItemSchema⬜
projects?ProjectItemSchema[]⬜
profiles?ProfileItemSchema[]⬜
publications?PublicationItemSchema[]⬜
references?ReferenceItemSchema[]⬜
skills?SkillItemSchema[]⬜
volunteer?VolunteerItemSchema[]⬜
work?WorkItemSchema[]⬜

AwardItemSchema

Valide un prix, honneur ou reconnaissance reçu.

PropTypeRequisRègles de Validation
awarderstring✅2-128 caractères
titlestring✅2-128 caractères
date?string⬜voir schéma de date
summary?string⬜voir schéma de résumé

BasicsItemSchema

Valide les informations personnelles et de contact principales.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
email?string⬜voir schéma d'email
headline?string⬜2-128 caractères
phone?string⬜voir schéma de téléphone
summary?string⬜voir schéma de résumé
url?string⬜voir schéma d'URL

CertificateItemSchema

Valide une certification, référence ou qualification professionnelle.

PropTypeRequisRègles de Validation
issuerstring✅2-128 caractères
namestring✅2-128 caractères
date?string⬜voir schéma de date
url?string⬜voir schéma d'URL

EducationItemSchema

Valide une seule expérience éducative ou programme de diplôme.

PropTypeRequisRègles de Validation
areastring✅2-64 caractères
degreeDegree✅Doit être parmi les options de diplôme prédéfinies
institutionstring✅2-128 caractères
startDatestring✅voir schéma de date
courses?string[]⬜Chaque élément 2-128 caractères
endDate?string⬜voir schéma de date
summary?string⬜voir schéma de résumé
score?string⬜2-32 caractères
url?string⬜voir schéma d'URL

InterestItemSchema

Valide un seul intérêt, hobby ou activité personnelle.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
keywords?string[]⬜voir schéma de mots-clés

LanguageItemSchema

Valide un élément de compétence linguistique.

PropTypeRequisRègles de Validation
fluencyFluency✅Doit être parmi les options de maîtrise prédéfinies
languageLanguage✅Doit être parmi les options de langue prédéfinies
keywords?string[]⬜Chaque élément 1-32 caractères

LocationItemSchema

Valide les informations de localisation et d'adresse.

PropTypeRequisRègles de Validation
citystring✅2-128 caractères
address?string⬜2-128 caractères
country?Country⬜Doit être parmi les options de pays prédéfinies
postalCode?string⬜2-128 caractères
region?string⬜2-128 caractères

ProfileItemSchema

Valide un seul profil en ligne ou présence sur les réseaux sociaux.

PropTypeRequisRègles de Validation
networkNetwork✅Doit être parmi les options de réseau prédéfinies
usernamestring✅2-128 caractères
url?string⬜URL valide, max 256 caractères

ProjectItemSchema

Valide un seul projet, élément de portfolio ou travail technique.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
startDatestring✅voir schéma de date
summarystring✅voir schéma de résumé
description?string⬜4-128 caractères
endDate?string⬜voir schéma de date
keywords?string[]⬜Chaque élément 1-32 caractères
url?string⬜URL valide, max 256 caractères

PublicationItemSchema

Valide une seule publication, travail de recherche ou article académique.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
publisherstring✅2-128 caractères
releaseDate?string⬜voir schéma de date
summary?string⬜voir schéma de résumé
url?string⬜URL valide, max 256 caractères

ReferenceItemSchema

Valide une seule référence professionnelle ou recommandation.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
summarystring✅voir schéma de résumé
email?string⬜voir schéma d'email
phone?string⬜Format de téléphone valide
relationship?string⬜2-128 caractères

SkillItemSchema

Valide une seule compétence, expertise ou capacité technique.

PropTypeRequisRègles de Validation
levelLevel✅Doit être parmi les options de niveau prédéfinies
namestring✅2-128 caractères
keywords?string[]⬜Chaque élément 1-32 caractères

VolunteerItemSchema

Valide une seule expérience de bénévolat ou service communautaire.

PropTypeRequisRègles de Validation
organizationstring✅2-128 caractères
positionstring✅2-128 caractères
startDatestring✅voir schéma de date
summarystring✅voir schéma de résumé
endDate?string⬜voir schéma de date
url?string⬜URL valide, max 256 caractères

WorkItemSchema

Valide une seule expérience professionnelle ou poste d'emploi.

PropTypeRequisRègles de Validation
namestring✅2-128 caractères
positionstring✅2-128 caractères
startDatestring✅voir schéma de date
summarystring✅voir schéma de résumé
endDate?string⬜voir schéma de date
keywords?string[]⬜Chaque élément 1-32 caractères
url?string⬜URL valide, max 256 caractères

LocaleSchema

Valide les paramètres de locale pour l'internationalisation et la localisation.

PropTypeRequisRègles de Validation
language?LocaleLanguage⬜Doit être parmi les options de langue locale prédéfinies

LayoutsSchema

Définit la configuration de validation de la mise en page globale.

PropTypeRequisRègles de Validation
layouts[]DocxLayoutSchema | HtmlLayoutSchema | LatexLayoutSchema | MarkdownLayoutSchema⬜Tableau de configurations de mise en page.

Schémas de Mise en Page Courants

MarginsSchema

Valide les paramètres de marges de page pour la mise en page du document.

PropTypeRequisRègles de Validation
top?string⬜voir schéma de taille de marge
bottom?string⬜voir schéma de taille de marge
left?string⬜voir schéma de taille de marge
right?string⬜voir schéma de taille de marge
SectionsSchema

Valide les paramètres de personnalisation de section.

PropTypeRequisRègles de Validation
aliases?Record<SectionID, string>⬜Clés doivent être des IDs de section valides, valeurs chaînes (2-128 car)
order?OrderableSectionID[]⬜Tableau d'IDs de section ordonnables valides
ThemeSchema

Définit les paramètres visuels du thème du CV, comme les couleurs d'accent. Le moteur markdown ignore l'option de thème.

PropTypeRequisRègles de Validation
colors?{ accent?: AccentColor | HexColor }⬜voir couleur d'accent

L'option colors.accent définit la couleur d'accent des éléments mis en avant, comme les titres de sections, les filets, les liens et les étiquettes. Elle accepte un préréglage AccentColor nommé ou une chaîne de couleur hexadécimale #RRGGBB arbitraire.

HtmlLayoutSchema

Valide la configuration de la mise en page HTML.

PropTypeRequis
engine'html'✅
advanced?HtmlAdvancedSchema⬜
sections?SectionsSchema⬜
template?HtmlTemplateSchema⬜
theme?ThemeSchema⬜
typography?HtmlTypographySchema⬜
HtmlAdvancedSchema

Valide les options de configuration avancées pour HTML.

PropTypeRequisRègles de Validation
showAnchors?boolean⬜true/false
showIcons?boolean⬜true/false
title?string⬜-
footer?string⬜-
description?string⬜-
keywords?string⬜-
HtmlTemplateSchema

Valide la configuration du modèle HTML.

PropTypeRequisRègles de Validation
templateHtmlTemplate⬜Doit être parmi les options de modèle prédéfinies
HtmlTypographySchema

Valide les paramètres de typographie HTML.

PropTypeRequisRègles de Validation
fontFamily?string⬜Une liste de familles de polices séparées par des virgules.
fontSize?HtmlFontSize⬜Doit être parmi les options de taille de police prédéfinies
lineSpacing?LineSpacing⬜Doit être parmi les options d'interligne prédéfinies

LatexLayoutSchema

Valide la configuration de mise en page LaTeX.

PropTypeRequisRègles de Validation
advanced?LatexAdvancedSchema⬜Voir schéma avancé
engine'latex'✅Doit être "latex"
page?LatexPageSchema⬜Voir schéma de page
sections?SectionsSchema⬜Voir schéma de sections
template?LatexTemplate⬜Doit être parmi les options de modèle prédéfinies
theme?ThemeSchema⬜Voir schéma de thème
typography?LatexTypographySchema⬜Voir schéma de typographie
LatexAdvancedSchema

Valide les options de configuration avancées pour LaTeX.

PropTypeRequisRègles de Validation
fontspec?{ numbers?: LatexFontspecNumbers }⬜Doit être parmi les options de nombres fontspec prédéfinies
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
LatexPageSchema

Valide les paramètres au niveau de la page pour la présentation du document.

PropTypeRequisRègles de Validation
margins?MarginsSchema⬜Voir schéma de marges
paperSize?PaperSize⬜Doit être parmi les options de taille de papier prédéfinies
showPageNumbers?boolean⬜true/false
LatexTypographySchema

Valide les paramètres typographiques pour le formatage du document.

PropTypeRequisRègles de Validation
fontSize?LatexFontSize⬜Doit être parmi les options de taille de police prédéfinies
fontFamily?string⬜Une liste de familles de polices séparées par des virgules.
lineSpacing?LineSpacing⬜Doit être parmi les options d'interligne prédéfinies
links?{ underline?: boolean }⬜true/false

MarkdownLayoutSchema

Valide la configuration de mise en page Markdown.

PropTypeRequisRègles de Validation
engine'markdown'✅Doit être "markdown"
sections?SectionsSchema⬜Voir schéma de sections

DocxLayoutSchema

Valide la configuration de mise en page DOCX.

PropTypeRequisRègles de Validation
engine'docx'✅Doit être "docx"
advanced?DocxAdvancedSchema⬜Voir schéma avancé
page?DocxPageSchema⬜Voir schéma de page
sections?SectionsSchema⬜Voir schéma de sections
template?DocxTemplate⬜Doit être parmi les options de modèle prédéfinies
theme?ThemeSchema⬜Voir schéma de thème
typography?DocxTypographySchema⬜Voir schéma de typographie
DocxAdvancedSchema

Valide les options de configuration avancées pour DOCX.

PropTypeRequisRègles de Validation
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
DocxPageSchema

Valide les paramètres au niveau de la page pour la présentation du document.

PropTypeRequisRègles de Validation
margins?MarginsSchema⬜Voir schéma de marges
paperSize?DocxPaperSize⬜Doit être parmi les options de taille de papier prédéfinies
showPageNumbers?boolean⬜true/false
DocxTypographySchema

Valide les paramètres typographiques pour le formatage du document.

PropTypeRequisRègles de Validation
fontSize?DocxFontSize⬜Doit être parmi les options de taille de police prédéfinies
fontFamily?string⬜Une liste de familles de polices séparées par des virgules.
lineSpacing?LineSpacing⬜Doit être parmi les options d'interligne prédéfinies

Schémas de Validation Primitifs

Schéma Email

Valide les adresses email avec des exigences de format strictes.

Règles de Validation :

  • Doit être un format d'email valide
  • Pattern : ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$
  • Exemples : hi@ppresume.com, first.last@company.org, test+tag@domain.co.uk

Schéma Téléphone

Valide les numéros de téléphone avec un support de format flexible.

Règles de Validation :

  • Pattern : ^[+]?[(]?[0-9\\s-]{1,15}[)]?[0-9\\s-]{1,15}$
  • Peut inclure un code pays, des parenthèses, des espaces et des tirets
  • Exemples : 555-123-4567, +44 20 7946 0958, (555) 123-4567

Schéma Résumé

Valide le texte de résumé avec des contraintes de longueur.

Règles de Validation :

  • Doit être entre 16 et 1024 caractères
  • Exemples :
    • "Ingénieur logiciel expérimenté avec 5+ ans de développement full-stack."
    • "Designer créatif passionné par l'expérience utilisateur et les principes de design moderne."
    • "Chef de projet dévoué avec un historique prouvé de livraison de projets complexes dans les temps et le budget."

Schéma URL

Valide les URLs avec des contraintes de longueur.

Règles de Validation :

  • Doit être un format d'URL valide
  • Longueur maximale de 256 caractères
  • Exemples : https://yamlresume.dev, https://ppresume.com, https://github.com/yamlresume/yamlresume

Schéma Mots-clés

Valide les tableaux de mots-clés avec des contraintes d'éléments individuels.

Règles de Validation :

  • Tableau de chaînes
  • Chaque mot-clé doit être entre 1 et 32 caractères
  • Exemples : ["Javascript", "React", "Typescript"], ["Design", "UI", "UX"]

Schéma Date

Valide les chaînes de date avec des exigences de format.

Règles de Validation :

  • Doit être entre 4 et 32 caractères
  • Doit être analysable par Date.parse()
  • Exemples : 2025-01-01, Jul 2025, July 3, 2025, 2025-02-02T00:00:03.123Z

Schéma Taille de Marge

Valide les chaînes de taille de marge avec des exigences d'unité.

Règles de Validation :

  • Doit être entre 2 et 32 caractères
  • Pattern : ^\\d+(\\.\\d+)?(cm|pt|in)$
  • Doit être un nombre positif suivi d'unités valides : cm, pt, ou in
  • Exemples : 2.5cm, 1in, 72pt, 0.5cm, 12pt

Schéma Famille de Police DOCX

Valide les noms de familles de polices pour la sortie DOCX.

Règles de Validation :

  • Doit être un nom de famille de police valide disponible sur le système cible
  • Exemples : Arial, Times New Roman, Calibri

Schémas de Validation Enum

Country

Un type union pour tous les pays et régions possibles dans le monde.

Règles de Validation :

  • Doit être l'une des options de pays prédéfinies
  • Exemples : United States, China, United Kingdom, Germany

Degree

Un type union pour tous les diplômes possibles.

Règles de Validation :

  • Doit être l'un de : Associate, Bachelor, Diploma, Doctor, High School, Master, Middle School

Fluency

Un type union pour tous les niveaux de maîtrise linguistique possibles.

Règles de Validation :

  • Doit être l'un de :
    • Elementary Proficiency
    • Full Professional Proficiency
    • Limited Working Proficiency
    • Minimum Professional Proficiency
    • Native or Bilingual Proficiency

Language

Un type union pour toutes les langues supportées.

Règles de Validation :

  • Doit être l'une des options de langue prédéfinies
  • Exemples : English, Chinese, Spanish, French, German

Level

Un type union pour tous les niveaux de compétence possibles.

Règles de Validation :

  • Doit être l'un de : Advanced, Beginner, Expert, Intermediate, Master, Novice

Network

Un type union pour toutes les options de réseau social possibles.

Règles de Validation :

  • Doit être l'une des options de réseau prédéfinies
  • Exemples : GitHub, LinkedIn, Twitter, Facebook, Instagram

AccentColor

Un type d'union pour tous les préréglages de couleur d'accent possibles, suivant la palette du schéma de couleurs de moderncv. Une chaîne de couleur hexadécimale #RRGGBB arbitraire est également acceptée partout où un AccentColor est attendu.

Règles de Validation :

  • Doit être l'un de :
    • black - #000000
    • blue - #3873B3
    • burgundy - #980000
    • cerulean - #0081A7
    • green - #59B24D
    • grey - #737373
    • orange - #F28C26
    • purple - #8054CC
    • red - #F23333

DocxFontSize

Un type union pour toutes les options de taille de police DOCX possibles.

Règles de Validation :

  • Doit être l'une de : 10pt, 10.5pt, 11pt, 11.5pt, 12pt
  • 10pt est la taille de police par défaut

DocxPaperSize

Un type union pour toutes les options de taille de papier DOCX possibles.

Règles de Validation :

  • Doit être l'une de : a4, letter
  • a4 est la taille de papier par défaut

DocxTemplate

Un type union pour toutes les options de modèle DOCX possibles.

Règles de Validation :

  • Doit être l'une de : calm
  • Voir aussi : modèles

HtmlFontSize

Un type union pour toutes les options de taille de police HTML possibles.

Règles de Validation :

  • Doit être l'une de : 14px, 15px, 16px, 17px, 18px, 19px, 20px
  • Le moteur HTML supporte les tailles de police de 14px à 20px
  • 16px est la taille de police par défaut

HtmlTemplate

Un type union pour toutes les options de modèle HTML possibles.

Règles de Validation :

  • Doit être l'une de : calm, kami, vscode
  • Voir aussi : modèles

LatexTemplate

Un type union pour toutes les options de modèle possibles.

Règles de Validation :

  • Doit être l'un de : jake, moderncv-banking, moderncv-casual, moderncv-classic
  • Voir aussi : modèles

LocaleLanguage

Un type union pour toutes les langues de locale possibles.

Règles de Validation :

  • Doit être l'une de : en, es, zh-hans, zh-hant-hk, zh-hant-tw
  • Voir aussi : multi-langues

LatexFontspecNumbers

Un type union pour toutes les options de nombres fontspec latex possibles.

Règles de Validation :

  • Doit être l'une de :
    • Auto - permettant au style d'être automatiquement déterminé basé sur la LocaleLanguage sélectionnée (par défaut)
    • Lining - chiffres standards de ligne (par défaut pour les langues CJK)
    • OldStyle - anciens chiffres de style avec des hauteurs variables (par défaut pour les langues latines)

LineSpacing

Un type union pour toutes les options d'interligne possibles.

Règles de Validation :

  • Doit être l'un de :
    • tight - Interligne compact pour plus de contenu
    • snug - Un peu plus d'espace que tight
    • normal - Lisibilité équilibrée (par défaut)
    • relaxed - Plus d'espace entre les lignes
    • loose - Mise en page très aérée

LatexFontSize

Un type union pour toutes les options de taille de police possibles.

Règles de Validation :

  • Doit être l'une de : 10pt, 11pt, 12pt
  • 10pt est la taille de police par défaut

PaperSize

Un type union pour toutes les options de taille de papier LaTeX possibles.

Règles de Validation :

  • Doit être l'un de : a4, letter
Edit on GitHub

Last updated on

On this page