YAMLResume

Zod Schema

YAMLResume menggunakan zod untuk memvalidasi data resume pada runtime.

Dokumen ini menguraikan semua schema zod yang digunakan dalam YAMLResume. Jika Anda tertarik dengan detail implementasi, Anda dapat menemukan kode sumbernya di sini.

Resume Schema

Mendefinisikan validasi struktur resume keseluruhan, termasuk validasi konten dan tata letak.

KolomTipeWajib
contentContentSchema✅
layouts?LayoutsSchema⬜
locale?LocaleSchema⬜

ContentSchema

Mendefinisikan struktur validasi untuk seluruh konten resume.

KolomTipeWajib
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

Memvalidasi satu penghargaan, kehormatan, atau pengakuan yang diterima.

KolomTipeWajibAturan Validasi
awarderstring✅2-128 karakter
titlestring✅2-128 karakter
date?string⬜lihat skema tanggal
summary?string⬜lihat skema ringkasan

BasicsItemSchema

Memvalidasi informasi inti pribadi dan kontak.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
email?string⬜lihat skema email
headline?string⬜2-128 karakter
phone?string⬜lihat skema telepon
summary?string⬜lihat skema ringkasan
url?string⬜lihat skema url

CertificateItemSchema

Memvalidasi satu sertifikasi, kredensial, atau kualifikasi profesional.

KolomTipeWajibAturan Validasi
issuerstring✅2-128 karakter
namestring✅2-128 karakter
date?string⬜lihat skema tanggal
url?string⬜lihat skema url

EducationItemSchema

Memvalidasi satu pengalaman pendidikan atau program gelar.

KolomTipeWajibAturan Validasi
areastring✅2-64 karakter
degreeDegree✅Harus dari opsi gelar yang telah ditentukan
institutionstring✅2-128 karakter
startDatestring✅lihat skema tanggal
courses?string[]⬜Setiap item 2-128 karakter
endDate?string⬜lihat skema tanggal
summary?string⬜lihat skema ringkasan
score?string⬜2-32 karakter
url?string⬜lihat skema url

InterestItemSchema

Memvalidasi satu minat, hobi, atau aktivitas pribadi.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
keywords?string[]⬜lihat skema kata kunci

LanguageItemSchema

Memvalidasi satu item kemampuan bahasa.

KolomTipeWajibAturan Validasi
fluencyFluency✅Harus dari opsi fluency yang telah ditentukan
languageLanguage✅Harus dari opsi bahasa yang telah ditentukan
keywords?string[]⬜Setiap item 1-32 karakter

LocationItemSchema

Memvalidasi informasi lokasi dan alamat.

KolomTipeWajibAturan Validasi
citystring✅2-128 karakter
address?string⬜2-128 karakter
country?Country⬜Harus dari opsi negara yang telah ditentukan
postalCode?string⬜2-128 karakter
region?string⬜2-128 karakter

ProfileItemSchema

Memvalidasi satu profil online atau kehadiran media sosial.

KolomTipeWajibAturan Validasi
networkNetwork✅Harus dari opsi jaringan yang telah ditentukan
usernamestring✅2-128 karakter
url?string⬜URL valid, maks 256 karakter

ProjectItemSchema

Memvalidasi satu proyek, karya portofolio, atau karya teknis.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
startDatestring✅lihat skema tanggal
summarystring✅lihat skema ringkasan
description?string⬜4-128 karakter
endDate?string⬜lihat skema tanggal
keywords?string[]⬜Setiap item 1-32 karakter
url?string⬜URL valid, maks 256 karakter

PublicationItemSchema

Memvalidasi satu publikasi, karya penelitian, atau makalah akademik.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
publisherstring✅2-128 karakter
releaseDate?string⬜lihat skema tanggal
summary?string⬜lihat skema ringkasan
url?string⬜URL valid, maks 256 karakter

ReferenceItemSchema

Memvalidasi satu referensi profesional atau rekomendasi.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
summarystring✅lihat skema ringkasan
email?string⬜lihat skema email
phone?string⬜Format telepon valid
relationship?string⬜2-128 karakter

SkillItemSchema

Memvalidasi satu keterampilan, kompetensi, atau kemampuan teknis.

KolomTipeWajibAturan Validasi
levelLevel✅Harus dari opsi level yang telah ditentukan
namestring✅2-128 karakter
keywords?string[]⬜Setiap item 1-32 karakter

VolunteerItemSchema

Memvalidasi satu pengalaman volunteer atau layanan komunitas.

KolomTipeWajibAturan Validasi
organizationstring✅2-128 karakter
positionstring✅2-128 karakter
startDatestring✅lihat skema tanggal
summarystring✅lihat skema ringkasan
endDate?string⬜lihat skema tanggal
url?string⬜URL valid, maks 256 karakter

WorkItemSchema

Memvalidasi satu pengalaman kerja atau posisi pekerjaan.

KolomTipeWajibAturan Validasi
namestring✅2-128 karakter
positionstring✅2-128 karakter
startDatestring✅lihat skema tanggal
summarystring✅lihat skema ringkasan
endDate?string⬜lihat skema tanggal
keywords?string[]⬜Setiap item 1-32 karakter
url?string⬜URL valid, maks 256 karakter

LocaleSchema

Memvalidasi pengaturan locale untuk internasionalisasi dan lokalisasi.

KolomTipeWajibAturan Validasi
language?LocaleLanguage⬜Harus dari opsi bahasa locale yang telah ditentukan

LayoutsSchema

Mendefinisikan konfigurasi validasi tata letak keseluruhan.

KolomTipeWajibAturan Validasi
layouts[]DocxLayoutSchema | HtmlLayoutSchema | LatexLayoutSchema | MarkdownLayoutSchema⬜Beberapa konfigurasi tata letak output.

Common Layout Schemas

MarginsSchema

Memvalidasi pengaturan margin halaman untuk tata letak dokumen.

KolomTipeWajibAturan Validasi
top?string⬜lihat skema ukuran margin
bottom?string⬜lihat skema ukuran margin
left?string⬜lihat skema ukuran margin
right?string⬜lihat skema ukuran margin
SectionsSchema

Memvalidasi pengaturan kustomisasi bagian.

KolomTipeWajibAturan Validasi
aliases?Record<SectionID, string>⬜Key harus ID bagian yang valid, nilai harus string (2-128 karakter)
order?OrderableSectionID[]⬜Array ID bagian yang dapat diurutkan yang valid
ThemeSchema

Mendefinisikan pengaturan tema visual untuk resume, seperti warna aksen. Engine markdown mengabaikan opsi tema.

KolomTipeWajibAturan Validasi
colors?{ accent?: AccentColor | HexColor }⬜lihat warna aksen

Opsi colors.accent menetapkan warna aksen untuk elemen yang disorot seperti judul bagian, garis, tautan, dan label. Opsi ini menerima preset AccentColor bernama atau string warna heksadesimal #RRGGBB arbitrer.

HtmlLayoutSchema

Memvalidasi konfigurasi tata letak HTML.

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

Memvalidasi opsi konfigurasi HTML lanjutan.

KolomTipeWajibAturan Validasi
showAnchors?boolean⬜true/false
showIcons?boolean⬜true/false
title?string⬜-
footer?string⬜-
description?string⬜-
keywords?string⬜-
HtmlTemplateSchema

Memvalidasi konfigurasi template HTML.

KolomTipeWajibAturan Validasi
templateHtmlTemplate⬜Harus dari opsi template yang telah ditentukan
HtmlTypographySchema

Memvalidasi pengaturan tipografi HTML.

KolomTipeWajibAturan Validasi
fontSize?HtmlFontSize⬜Harus dari opsi ukuran font yang telah ditentukan
fontFamily?string⬜Daftar keluarga font yang dipisahkan koma.
lineSpacing?LineSpacing⬜Harus dari opsi spasi baris yang telah ditentukan

LatexLayoutSchema

Memvalidasi konfigurasi tata letak LaTeX.

KolomTipeWajibAturan Validasi
advanced?LatexAdvancedSchema⬜Lihat skema lanjutan
engine'latex'✅Harus "latex"
page?LatexPageSchema⬜Lihat skema halaman
sections?SectionsSchema⬜Lihat skema bagian
template?LatexTemplate⬜Harus dari opsi template yang telah ditentukan
theme?ThemeSchema⬜Lihat skema tema
typography?LatexTypographySchema⬜Lihat skema tipografi
LatexAdvancedSchema

Memvalidasi opsi konfigurasi LaTeX lanjutan.

KolomTipeWajibAturan Validasi
fontspec?{ numbers?: LatexFontspecNumbers }⬜Harus dari opsi nomor fontspec yang telah ditentukan
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
LatexPageSchema

Memvalidasi pengaturan tingkat halaman untuk presentasi dokumen.

KolomTipeWajibAturan Validasi
margins?MarginsSchema⬜Lihat skema margins
paperSize?PaperSize⬜Harus dari opsi ukuran kertas yang telah ditentukan
showPageNumbers?boolean⬜true/false
LatexTypographySchema

Memvalidasi pengaturan tipografi untuk pemformatan dokumen.

KolomTipeWajibAturan Validasi
fontSize?LatexFontSize⬜Harus dari opsi ukuran font yang telah ditentukan
fontFamily?string⬜Daftar keluarga font yang dipisahkan koma.
lineSpacing?LineSpacing⬜Harus dari opsi spasi baris yang telah ditentukan
links?{ underline?: boolean }⬜true/false

MarkdownLayoutSchema

Memvalidasi konfigurasi tata letak Markdown.

KolomTipeWajibAturan Validasi
engine'markdown'✅Harus "markdown"
sections?SectionsSchema⬜Lihat skema sections

DocxLayoutSchema

Memvalidasi konfigurasi tata letak DOCX.

KolomTipeWajibAturan Validasi
engine'docx'✅Harus "docx"
advanced?DocxAdvancedSchema⬜Lihat skema lanjutan
page?DocxPageSchema⬜Lihat skema halaman
sections?SectionsSchema⬜Lihat skema bagian
template?DocxTemplate⬜Harus dari opsi template yang telah ditentukan
theme?ThemeSchema⬜Lihat skema tema
typography?DocxTypographySchema⬜Lihat skema tipografi
DocxAdvancedSchema

Memvalidasi opsi konfigurasi DOCX lanjutan.

KolomTipeWajibAturan Validasi
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
DocxPageSchema

Memvalidasi pengaturan tingkat halaman untuk presentasi dokumen.

KolomTipeWajibAturan Validasi
margins?MarginsSchema⬜Lihat skema margins
paperSize?DocxPaperSize⬜Harus dari opsi ukuran kertas yang telah ditentukan
showPageNumbers?boolean⬜true/false
DocxTypographySchema

Memvalidasi pengaturan tipografi untuk pemformatan dokumen.

KolomTipeWajibAturan Validasi
fontSize?DocxFontSize⬜Harus dari opsi ukuran font yang telah ditentukan
fontFamily?string⬜Daftar keluarga font yang dipisahkan koma.
lineSpacing?LineSpacing⬜Harus dari opsi spasi baris yang telah ditentukan

Skema Validasi Primitif

Email Schema

Memvalidasi alamat email dengan persyaratan format yang ketat.

Aturan Validasi:

  • Harus format email yang valid
  • Pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$
  • Contoh: hi@ppresume.com, first.last@company.org, test+tag@domain.co.uk

Phone Schema

Memvalidasi nomor telepon dengan dukungan format fleksibel.

Aturan Validasi:

  • Pattern: ^[+]?[(]?[0-9\\s-]{1,15}[)]?[0-9\\s-]{1,15}$
  • Dapat menyertakan kode negara, tanda kurung, spasi, dan tanda hubung
  • Contoh: 555-123-4567, +44 20 7946 0958, (555) 123-4567

Summary Schema

Memvalidasi teks ringkasan dengan batasan panjang.

Aturan Validasi:

  • Harus antara 16 dan 1024 karakter
  • Contoh:
    • "Experienced software engineer with 5+ years in full-stack development."
    • "Creative designer passionate about user experience and modern design principles."
    • "Dedicated project manager with proven track record of delivering complex projects on time and budget."

URL Schema

Memvalidasi URL dengan batasan panjang.

Aturan Validasi:

  • Harus format URL yang valid
  • Panjang maksimum 256 karakter
  • Contoh: https://yamlresume.dev, https://ppresume.com, https://github.com/yamlresume/yamlresume

Keywords Schema

Memvalidasi array kata kunci dengan batasan item individual.

Aturan Validasi:

  • Array dari string
  • Setiap kata kunci harus antara 1 dan 32 karakter
  • Contoh: ["Javascript", "React", "Typescript"], ["Design", "UI", "UX"]

Date Schema

Memvalidasi string tanggal dengan persyaratan format.

Aturan Validasi:

  • Harus antara 4 dan 32 karakter
  • Harus dapat di-parse oleh Date.parse()
  • Contoh: 2025-01-01, Jul 2025, July 3, 2025, 2025-02-02T00:00:03.123Z

Margin Size Schema

Memvalidasi string ukuran margin dengan persyaratan unit.

Aturan Validasi:

  • Harus antara 2 dan 32 karakter
  • Pattern: ^\\d+(\\.\\d+)?(cm|pt|in)$
  • Harus angka positif diikuti unit yang valid: cm, pt, atau in
  • Contoh: 2.5cm, 1in, 72pt, 0.5cm, 12pt

DOCX Font Family Schema

Memvalidasi nama keluarga font untuk output DOCX.

Aturan Validasi:

  • Harus nama keluarga font yang valid yang tersedia di sistem target
  • Contoh: Arial, Times New Roman, Calibri

Skema Validasi Enum

Country

Union type untuk semua negara dan wilayah possible di dunia.

Aturan Validasi:

  • Harus salah satu dari opsi negara yang telah ditentukan
  • Contoh: United States, China, United Kingdom, Germany

Degree

Union type untuk semua gelar possible.

Aturan Validasi:

  • Harus salah satu dari: Associate, Bachelor, Diploma, Doctor, High School, Master, Middle School

Fluency

Union type untuk semua level kefasihan bahasa possible.

Aturan Validasi:

  • Harus salah satu dari:
    • Elementary Proficiency
    • Full Professional Proficiency
    • Limited Working Proficiency
    • Minimum Professional Proficiency
    • Native or Bilingual Proficiency

Language

Union type untuk semua bahasa yang didukung.

Aturan Validasi:

  • Harus salah satu dari opsi bahasa yang telah ditentukan
  • Contoh: English, Chinese, Spanish, French, German

Level

Union type untuk semua level keterampilan possible.

Aturan Validasi:

  • Harus salah satu dari: Advanced, Beginner, Expert, Intermediate, Master, Novice

Network

Union type untuk semua opsi jaringan sosial possible.

Aturan Validasi:

  • Harus salah satu dari opsi jaringan yang telah ditentukan
  • Contoh: GitHub, LinkedIn, Twitter, Facebook, Instagram

AccentColor

Tipe union untuk semua preset warna aksen yang memungkinkan, mengikuti palet skema warna moderncv. String warna heksadesimal #RRGGBB arbitrer juga diterima di mana pun AccentColor diharapkan.

Aturan Validasi:

  • Harus salah satu dari:
    • black - #000000
    • blue - #3873B3
    • burgundy - #980000
    • cerulean - #0081A7
    • green - #59B24D
    • grey - #737373
    • orange - #F28C26
    • purple - #8054CC
    • red - #F23333

DocxFontSize

Union type untuk semua opsi ukuran font DOCX possible.

Aturan Validasi:

  • Harus salah satu dari: 10pt, 10.5pt, 11pt, 11.5pt, 12pt
  • 10pt adalah ukuran font default

DocxPaperSize

Union type untuk semua opsi ukuran kertas DOCX possible.

Aturan Validasi:

  • Harus salah satu dari: a4, letter
  • a4 adalah ukuran kertas default

DocxTemplate

Union type untuk semua opsi template DOCX possible.

Aturan Validasi:

  • Harus salah satu dari: calm
  • Lihat juga: templates

HtmlFontSize

Union type untuk semua opsi ukuran font HTML possible.

Aturan Validasi:

  • Harus salah satu dari: 14px, 15px, 16px, 17px, 18px, 19px, 20px
  • Mesin HTML mendukung ukuran font dari 14px hingga 20px
  • 16px adalah ukuran font default

HtmlTemplate

Union type untuk semua opsi template HTML possible.

Aturan Validasi:

  • Harus salah satu dari: calm, kami, vscode
  • Lihat juga: templates

LatexTemplate

Union type untuk semua opsi template LaTeX possible.

Aturan Validasi:

  • Harus salah satu dari: jake, moderncv-banking, moderncv-casual, moderncv-classic
  • Lihat juga: templates

PaperSize

Union type untuk semua opsi ukuran kertas LaTeX possible.

Aturan Validasi:

  • Harus salah satu dari: a4, letter

LatexFontSize

Union type untuk semua opsi ukuran font LaTeX possible.

Aturan Validasi:

  • Harus salah satu dari: 10pt, 11pt, 12pt
  • 10pt adalah ukuran font default

LatexFontspecNumbers

Union type untuk semua opsi nomor fontspec latex possible.

Aturan Validasi:

  • Harus salah satu dari:
    • Auto - memungkinkan gaya ditentukan secara otomatis berdasarkan LocaleLanguage yang dipilih (default)
    • Lining - angka lining standar (default untuk bahasa CJK)
    • OldStyle - angka gaya lama dengan ketinggian bervariasi (default untuk bahasa Latin)

LineSpacing

Union type untuk semua opsi spasi baris possible.

Aturan Validasi:

  • Harus salah satu dari:
    • tight - Spasi kompak untuk muat lebih banyak konten
    • snug - Sedikit lebih banyak ruang dari tight
    • normal - Keseimbangan keterbacaan (default)
    • relaxed - Lebih banyak ruang antar baris
    • loose - Tata letak sangat ruang

LocaleLanguage

Union type untuk semua bahasa locale possible.

Aturan Validasi:

  • Harus salah satu dari: en, es, zh-hans, zh-hant-hk, zh-hant-tw
  • Lihat juga: multi-languages
Edit on GitHub

Last updated on

On this page