YAMLResume

YAMLResume VS JSON Resume

JSON Resume adalah pelopor dalam membangun standar erbuka untuk format data terstruktur untuk resume. Rilis resmi pertama-nya pada tanggal 31 Juli 2014—lebih dari 10 tahun yang lalu.

Dari situs web resminya:

## Origins and Conceptualization

JSON Resume was conceived as a solution to the fragmented and inconsistent
landscape of resume formats. Traditional resumes, typically created in formats
like Microsoft Word or PDF, often suffer from compatibility issues when parsed
by different systems. Recognizing this problem, Thomas Davis and Roland Sharp
initiated JSON Resume as an open-source project to create a universal,
machine-readable format for resumes.

## Development Milestones

The project began gaining momentum in the early 2010s, with significant
milestones such as the creation of the JSON Resume schema, the development of
the first CLI tools, and the establishment of the JSON Resume registry. These
milestones were driven by community contributions and the growing recognition of
the need for a standardized resume format in the tech industry.

JSON Resume melakukan pekerjaan yang sangat baik dalam menetapkan standar terbuka untuk data resume terstruktur. Namun, ini hanya berupa data—ia menentukan cara menyusun resume dalam JSON tetapi tidak memberikan solusi yang berpendapat untuk mengubah data tersebut menjadi dokumen yang indah dan profesional secara typesetting.

YAMLResume sangat terinspirasi oleh JSON Resume dan mengambil pendekatan yang lebih berpendapat, baterai-termasuk. Berikut adalah perbandingannya:

Perbandingan Fitur

FiturYAMLResumeJSON Resume
Format DataYAMLJSON
Internasionalisasi10 bahasa bawaanTidak ada
Dukungan Teks KayaSekumpulan sintaks teks kaya Markdown di bidang summaryTidak ada
Validasi SkemaValidasi skema ketat dengan compiler + integrasi IDEValidasi JSON Schema dasar
Kustomisasi FontKeluarga font, ukuran font, jarak baris, dllTidak ada
Kustomisasi Tata LetakMargin halaman, nomor halaman, ukuran kertas, dllTidak ada
Kustomisasi BagianAlias dan pengurutan ulangTidak ada
Mesin TypesettingHTML, Markdown, LaTeXHTML
Format OutputHTML, Markdown, LaTeX/PDFHTML dan PDF
TemplateBeberapa template LaTeX dan HTML resmiPuluhan tema HTML
Mode DevMode dev dengan pembangunan otomatisYa
Alat Konversijson2yamlresume membantu mengkonversi JSON Resume ke YAMLResumeN/A
Dukungan DockerGambar docker resmi dengan LaTeX dan YAMLResume yang sudah terinstalTidak ada
GitHub ActionGitHub action resmi untuk CI/CDTidak ada
HomebrewFormula Homebrew untuk instalasi mudah di macOS dan LinuxTidak ada
Taman Bermain WebTaman bermain berbasis web interaktifTidak ada

Perbedaan Kunci Dijelaskan

Jika kita harus memilih satu kata untuk merangkum perbedaan antara YAMLResume dan JSON Resume, kata itu adalah berpendapat. JSON Resume adalah standar data yang definisikan cara menyusun resume dalam JSON, tetapi ia membiarkan hampir semuanya terserah kepada Anda. YAMLResume mengambil pendekatan yang lebih berpendapat, baterai-termasuk yang tidak hanya menyediakan format data tetapi juga seperangkat alat yang kaya untuk memvalidasi, menyesuaikan, merender, dan mendistribusikan resume Anda di berbagai format dan bahasa.

Konten

YAMLResume dan JSON Resume memiliki struktur konten yang serupa, tetapi YAMLResume memperluas model data dengan validasi skema yang lebih kuat, bidang yang lebih standar, dukungan teks kaya di bidang summary, dan struktur yang lebih datar:

Validasi skema yang lebih kuat

YAMLResume dilengkapi dengan skema Zod yang sangat komprehensif, dengan skema tersebut dapat memvalidasi resume Anda pada waktu kompilasi dan menegakkan keamanan tipe, kebenaran format dengan pesan kesalahan gaya clang:

Misalnya, untuk resume berikut yang memiliki email tidak valid, nama kota yang terlalu pendek, dan ukuran font di luar rentang:

# yaml-language-server: $schema=https://yamlresume.dev/schema.json
---
content:
  basics:
    name: Andy Dufresne
    headline: Headed for the Pacific
    phone: "(213) 555-9876"
    email: hi@pp
    url: https://ppresume.com/gallery
    summary: |
      - Computer Science major with strong foundation in data structures, algorithms, and software development
      - Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
      - Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
      - Team player, with detail-oriented mindset and a keen eye for design and user experiences
  location:
    address: 123 Main Street
    region: California
    city: S
    country: United States
    postalCode: "95814"
  education:
    - institution: University of Southern California
      url: https://www.cs.usc.edu/
      degree: Bachelor
      area: Computer Engineering and Computer Science
      score: "3.8"
      startDate: Sep 1, 2016
      endDate:
      courses:
        - D
        - Programming Language Concepts
      summary: |
        - Developed proficiency in programming languages such as Java, C++, and Python
        - Gained hands-on experience in software development through various projects and assignments
        - Strong communication and teamwork skills acquired through group projects and presentations

layouts:
  - engine: latex
    typography:
      fontSize: 13pt

yamlresume validate akan menunjukkan daftar potensi kesalahan, dengan informasi posisi yang jelas:

$ yamlresume validate my-resume.yml
my-resume.yml:9:12: warning: email is invalid.
    email: hi@pp
           ^
my-resume.yml:38:10: error: city is too short.
    city: S
          ^
my-resume.yml:41:14: error: font size must be between 10pt and 12pt.
    fontSize: 13pt
              ^

YAMLResume juga menyertakan JSON Schema resmi untuk auto-completion IDE, dokumentasi saat mengarahkan kursor, dan validasi real-time di editor seperti VS Code.

Auto completion di VS Code dengan JSON Schema YAMLResume:

Validasi Format di VS Code:

Di sisi lain, JSON Resume menyediakan validasi JSON Schema dasar yang memeriksa struktur tetapi menawarkan validasi semantik yang terbatas—tidak ada pelaporan kesalahan saat kompilasi dengan nomor baris, tidak ada integrasi IDE, dan tidak ada pemeriksaan aturan bisnis seperti panjang string minimum atau validasi nilai terenumerasi.

Teks Kaya

YAMLResume mendukung sekumpulan sintaks Markdown terbatas (tebal, miring, tautan, daftar, dan paragraf) di bidang summary di semua bagian yang memiliki bidang summary. Ini memungkinkan Anda untuk menekankan pencapaian kunci atau menyusun tanggung jawab dengan daftar bersarang tanpa bergantung pada aturan rendering tema-spesifik.

Salah satu alasan inti mengapa menggunakan YAML daripada JSON adalah bahwa sintaks string multi-baris YAML membuatnya jauh lebih mudah untuk menulis dan membaca konten teks kaya secara langsung dalam file sumber resume, tanpa perlu melarikan baris baru atau karakter khusus seperti yang Anda lakukan di JSON.

Misalnya, berikut adalah bidang summary dari entri work yang menggabungkan beberapa fitur sintaks yang didukung:

---
content:
  basics:
    # ...
    summary: |
      This is a sample YAML resume that support limited set of markdown rich text syntax (bold, italics, links, lists):

      - Computer Science major with **strong foundation** in data structures, *algorithms*, and software development
        1. Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
        2. Experiened in databases (SQL, NoSQL), familiar with server-side technologies ([Node.js](https://nodejs.org/en), Express, etc.)
      - Team player, with detail-oriented mindset and a keen eye for design and user experiences

Berikut adalah PDF yang dihasilkan dengan mesin LaTeX:

Rich Text Support in Summary Field

Berikut adalah konten yang sama dengan sintaks teks kaya yang dinyatakan dalam JSON:

{
  "content": {
    "basics": {
      "summary": "This is a sample YAML resume that support limited set of markdown rich text syntax (bold, italics, links, lists):\n\n- Computer Science major with **strong foundation** in data structures, *algorithms*, and software development\n  1. Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites\n  2. Experiened in databases (SQL, NoSQL), familiar with server-side technologies ([Node.js](https://nodejs.org/en), Express, etc.)\n- Team player, with detail-oriented mindset and a keen eye for design and user experiences\n"
    }
  }
}

Tidak ada keraguan bahwa versi JSON jauh lebih sulit untuk dibaca dan diedit, terutama untuk ringkasan yang lebih panjang dengan beberapa paragraf dan daftar bersarang.

JSON Resume tidak memiliki pendapat tentang pemformatan—bidang summary-nya hanya berupa teks biasa. Setiap gaya diserahkan sepenuhnya kepada masing-masing tema, yang berarti data resume yang sama dapat dirender secara berbeda (atau kehilangan struktur semantik sepenuhnya) tergantung pada tema yang Anda pilih.

Bidang standar

YAMLResume menormalkan nilai yang umum digunakan ke dalam kosakata tetap yang divalidasi pada waktu kompilasi dan diterjemahkan di semua lokal yang didukung:

  • Gelar pendidikan (Middle School, High School, Bachelor, Master, Doctor, dll.)
  • Tingkat keterampilan (Novice, Beginner, Intermediate, Advanced, Expert, Master)
  • Kefasihan bahasa (Elementary hingga Native)
  • Negara dan wilayah (diterjemahkan ke dalam setiap bahasa yang didukung)

Karena nilai-nilai ini diambil dari himpunan tertutup, YAMLResume dapat memvalidasinya, menerjemahkannya, dan merendernya secara konsisten—terlepas dari format output atau lokal. JSON Resume menerima string bebas, sehingga gelar yang ditulis sebagai BS, B.S., Bachelor of Science, atau Bachelor akan diteruskan apa adanya, meninggalkan konsistensi dan pelokalan kepada pengguna.

Struktur yang lebih datar

YAMLResume menempatkan kunci location dan profiles sosial di tingkat atas, terpisah dari basics, yang menyederhanakan model data dan membuatnya lebih selaras dan konsisten di semua bagian. JSON Resume menyusunnya di bawah basics, yang dapat menyebabkan struktur data yang lebih kompleks.

Tata Letak

JSON Resume berhenti pada lapisan data. Ia memberitahu Anda cara menyusun resume dalam JSON tetapi membiarkan rendering sepenuhnya kepada Anda. YAMLResume menyediakan pipeline yang lengkap dan berpendapat dari sumber YAML ke output yang dipoles:

  • Mesin HTML: Resume yang responsif dan siap web dengan metadata SEO
  • Mesin Markdown: Teks bersih untuk LLM, sistem ATS, dan situs statis
  • Mesin LaTeX: PDF yang sempurna secara piksel dengan tipografi profesional

Satu perintah yamlresume build dapat menghasilkan ketiga format dari file sumber yang sama.

YAMLResume juga menyediakan seperangkat opsi kustomisasi tata letak yang kaya yang melebihi apa yang ditawarkan JSON Resume.

Kustomisasi halaman

YAMLResume memberi Anda kontrol penuh atas tata letak halaman fisik, yang sangat penting untuk output PDF mesin LaTeX di mana pemformatan yang tepat sangat penting:

  • Ukuran kertas: Pilih antara A4 (default) dan US Letter untuk mencocokkan standar regional
  • Margin halaman: Tetapkan atas, bawah, kiri, dan kanan secara independen dalam sentimeter (mis., left: 1.5cm, top: 2.5cm) untuk mengontrol ruang kosong dan kepadatan konten
  • Nomor halaman: Aktifkan atau nonaktifkan nomor halaman, dan kontrol posisi serta gayanya untuk resume multi-halaman

Pengaturan ini sangat penting untuk mesin LaTeX, di mana bahkan penyesuaian margin kecil dapat secara signifikan memengaruhi cara konten mengalir di seluruh halaman.

Kustomisasi tipografi

YAMLResume menyediakan kontrol tipografi semantik yang dipetakan ke implementasi spesifik mesin:

  • Keluarga font: Tentukan daftar nama font yang diprioritaskan (mis., "Merriweather, serif") yang berfungsi seperti font-family CSS untuk HTML atau pemilihan font XeTeX untuk LaTeX
  • Ukuran font: LaTeX mendukung 10pt, 11pt, atau 12pt; HTML mendukung 14px hingga 20px
  • Jarak baris: Pilih dari lima tingkat semantik—tight, snug, normal, relaxed, atau loose—untuk mengontrol kepadatan konten tanpa menghitung nilai leading secara manual, mendukung mesin LaTeX dan HTML

JSON Resume sama sekali tidak memiliki sistem tipografi. Pemformatan sepenuhnya tergantung pada tema, yang berarti mengganti tema dapat mengubah penampilan resume Anda secara drastis.

Kustomisasi bagian

YAMLResume memungkinkan Anda membentuk kembali struktur resume melalui alias bagian dan pengurutan ulang bagian tanpa menyentuh data yang mendasarinya:

  • Alias bagian: Ganti judul bagian default untuk salah satu dari 12 bagian yang dapat dialiaskan. Ubah "Work" menjadi "Professional Experience", "Education" menjadi "Academic Background", atau "Skills" menjadi "Technical Proficiencies" untuk mencocokkan industri atau preferensi pribadi Anda. Alias mendukung 2–128 karakter dan kembali ke default khusus lokal jika tidak disediakan.
  • Pengurutan ulang bagian: Ubah urutan presentasi bagian dengan daftar order yang sederhana. Tempatkan skills sebelum work, sorot publications dan awards untuk peran akademik, atau awali dengan projects untuk resume bergaya portofolio. Bagian yang tidak secara eksplisit didasarkan akan ditambahkan dalam urutan defaultnya, dan bagian kosong secara otomatis disaring.

JSON Resume mendefinisikan struktur bagian dalam skema tetapi tidak menawarkan mekanisme untuk mengganti nama atau mengurutkan ulang bagian—presentasi terkunci pada apa pun yang tema hardcode.

Lokal (i18n)

Pada saat penulisan, YAMLResume mendukung 10 bahasa secara langsung (English, Chinese, Spanish, French, Norwegian, Dutch, Japanese, German, Indonesian, dll.) dengan terjemahan bawaan header bagian, nama negara dan berbagai istilah, format alamat dan tanggal idiomatis, konfigurasi LaTeX terbaik, dll.

Anda dapat menggunakan yamlresume languages list untuk melihat semua bahasa yang didukung:

$ yamlresume languages list

| locale.language | Language Name                   |
| --------------- | ------------------------------- |
| en              | English                         |
| zh-hans         | Simplified Chinese              |
| zh-hant-hk      | Traditional Chinese (Hong Kong) |
| zh-hant-tw      | Traditional Chinese (Taiwan)    |
| es              | Spanish                         |
| fr              | French                          |
| no              | Norwegian                       |
| nl              | Dutch                           |
| ja              | Japanese                        |
| id              | Indonesian                      |
| de              | German                          |
| pt-br           | Brazilian Portuguese            |

YAMLResume mendukung i18n dengan cara berikut:

Terjemahan istilah

YAMLResume juga menyediakan data yang lebih standar untuk berbagai bidang:

  • Gelar: YAMLResume menormalkan gelar pendidikan ke sekumpulan tetap (Bachelor, Master, Doctor, dll.) untuk pemformatan yang konsisten
  • Tingkat keterampilan: YAMLResume menyediakan tingkat keterampilan yang telah ditentukan sebelumnya (Novice hingga Master) untuk presentasi yang standar
  • Kefasihan bahasa: YAMLResume menstandarisasi tingkat kefasihan (Elementary hingga Native) di semua lokal yang didukung

Tanda baca

YAMLResume secara otomatis menggunakan tanda baca yang sesuai lokal dalam resume yang dihasilkan. Bahasa yang berbeda memiliki aturan tanda baca yang berbeda yang melampaui terjemahan sederhana:

  • Bahasa CJK (Chinese, Japanese): Menggunakan tanda baca lebar penuh ( untuk koma, untuk titik dua) untuk mencocokkan lebar karakter
  • French: Menambahkan spasi non-breaking tipis sebelum tanda baca tinggi (: ! ?) dan menggunakan guillemets (« ») untuk kutipan
  • German: Menggunakan tanda kutip rendah-tinggi („“) atau guillemets yang menunjuk ke dalam (»«)
  • Spanish: Mendukung tanda baca terbalik (¿ ¡)

Template resume secara otomatis memilih gaya tanda baca yang benar berdasarkan pengaturan locale.language, memastikan konsistensi tipografi dengan konvensi lokal.

Pemformatan tanggal

YAMLResume memformat tanggal sesuai dengan konvensi khusus lokal daripada menggunakan format global tunggal:

  • English: "Jun 2018 – Present" (bulan yang disingkat, pemisah en-dash)
  • Chinese: "2018年6月至今" (tahun pertama, karakter lebar penuh, pemisah "至")
  • Japanese: "2016年10月~2018年1月" (tilde lebar penuh sebagai pemisah rentang)
  • German: Nama bulan yang diawali huruf kapital ("Januar", "Februar")
  • French: Bulan yang disingkat dengan huruf kecil dan titik ("janv.", "févr.")
  • Spanish: Bulan yang disingkat dengan huruf kecil ("ene", "feb")

Nama bulan, pengurutan tanggal, dan pemisah rentang semuanya beradaptasi secara otomatis ke bahasa yang dipilih.

Pemformatan alamat

YAMLResume menyesuaikan presentasi alamat untuk mencocokkan konvensi lokal:

  • English: Address → City → State → Country (paling spesifik ke paling umum)
  • Chinese: Country → Region → City → Address (paling umum ke paling spesifik)
  • German: Street + House Number, kemudian Postal Code sebelum City ("Musterstraße 123, 10115 Berlin")
  • Japanese: Country → Region (Prefecture) → City → Address → Postal Code

Komponen alamat diurutkan ulang secara otomatis berdasarkan lokal untuk cocok dengan harapan budaya untuk setiap bahasa.

Kustomisasi LaTeX babel

YAMLResume mengonfigurasi paket LaTeX babel untuk setiap bahasa yang didukung untuk memastikan typesetting yang tepat dalam output PDF:

  • Aturan pemenggalan kata: Pemenggalan kata khusus bahasa
  • Format tanggal: String tanggal yang dilokalisasi dalam dokumen yang dihasilkan
  • Tipografi: Aturan spasi dan tanda baca khusus bahasa
  • Penanganan karakter: Dukungan yang tepat untuk diakritik, ligatur, dan karakter khusus (mis., ß Jerman, ç Prancis, ñ Spanyol)

Misalnya, konfigurasi French babel memungkinkan penanganan yang tepat dari spasi non-breaking tipis sebelum titik dua, sementara German babel memastikan pola pemenggalan yang benar untuk kata-kata majemuk. Tingkat penyempurnaan tipografi ini tidak tersedia dalam ekosistem HTML-only JSON Resume.

Pengalaman Pengembang

YAMLResume menyediakan fitur DX modern yang tidak dimiliki JSON Resume:

  • yamlresume new: Buat resume baru dari template resmi dalam satu perintah
  • yamlresume build: Bangun resume Anda menjadi HTML, Markdown, dan PDF dalam satu kali jalan
  • yamlresume dev: Mode watch yang membangun ulang resume Anda pada setiap simpan
  • yamlresume doctor: Diagnosis lingkungan LaTeX dan pengaturan font Anda, memudahkan pemecahan masalah
  • yamlresume validate: Periksa resume Anda tanpa membangun
  • yamlresume languages list: Daftar semua bahasa yang didukung dan kode lokalnya
  • yamlresume templates list: Daftar semua template yang tersedia untuk setiap mesin

YAMLResume memperlakukan resume Anda sebagai kode. Compiler bawaan mengurai YAML Anda, memvalidasinya terhadap skema Zod yang komprehensif, mengubah data, dan menghasilkan output—menangkap kesalahan lebih awal dengan diagnostik gaya clang seperti yang disebutkan sebelumnya.

Ekosistem dan Komunitas

json2yamlresume

Jika Anda memiliki JSON Resume yang sudah ada, Anda dapat mengkonversinya ke YAMLResume menggunakan alat CLI json2yamlresume:

$ npm install -g json2yamlresume
$ json2yamlresume resume.json resume.yml

Konverter menangani semua bagian JSON Resume standar dan mengubah struktur bersarang (seperti basics.location dan basics.profiles) ke format tingkat atas YAMLResume yang lebih datar.

Docker

YAMLResume menyediakan gambar Docker resmi dengan semua dependensi yang sudah terinstal, termasuk Node.js, LaTeX, dan font yang direkomendasikan. Ini memudahkan untuk memulai tanpa instalasi lokal:

docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml

JSON Resume tidak memiliki dukungan Docker resmi, meninggalkan pengaturan lingkungan sepenuhnya kepada pengguna.

Homebrew

YAMLResume tersedia melalui Homebrew untuk pengguna macOS dan Linux:

brew install yamlresume

Ini menginstal CLI dan membuatnya tersedia secara global. JSON Resume tidak memiliki formula Homebrew dan harus diinstal melalui npm.

GitHub Action

YAMLResume menyediakan GitHub Action resmi untuk pipeline CI/CD. Anda dapat secara otomatis membangun dan melakukan commit PDF resume pada setiap push:

- uses: yamlresume/action@v0.2.3
  with:
    resumes: |
      resume-en.yml
      resume-zh.yml
      resume-fr.yml

JSON Resume tidak memiliki GitHub Action resmi, meskipun solusi komunitas tersedia.

Playground

YAMLResume menyediakan playground berbasis web interaktif dimana Anda dapat mengedit resume Anda secara real time dan melihat pratinjau instan di semua format output yang didukung. Playground dibangun di atas komponen React @yamlresume/playground dan memiliki fitur:

  • Editor YAML Langsung: Editor berbasis Monaco dengan penyorotan sintaks YAML dan validasi skema
  • Pratinjau Real-time: Rendering instan untuk tata letak HTML, Markdown, dan LaTeX
  • Opsi Ekspor: Unduh, salin, atau cetak resume Anda langsung dari browser
  • Desain Responsif: Tata letak panel terpisah di desktop, antarmuka ber-tab di mobile

Playground berguna untuk dengan cepat membuat prototipe desain resume, menguji konfigurasi tata letak, atau berbagi draf resume tanpa memerlukan lingkungan pengembangan lokal. Karena playground berjalan sepenuhnya di browser, Anda dapat menggunakannya di perangkat apa pun tanpa menginstal Node.js, LaTeX, atau dependensi lainnya.

JSON Resume tidak memiliki playground interaktif yang setara—pengguna harus menginstal CLI dan menyiapkan lingkungan lokal untuk melihat pratinjau tema.

Ringkasan

JSON Resume unggul sebagai format pertukaran data—cara standar untuk menyusun data resume. YAMLResume memperluas gagasan itu menjadi solusi resume lengkap, menyediakan tidak hanya format data tetapi juga seperangkat alat yang komprehensif untuk memvalidasi, merender, menyesuaikan, dan mendistribusikan resume Anda di berbagai format dan bahasa.

Pilih JSON Resume jika Anda memerlukan standar data yang ringan, banyak digunakan dan berencana untuk membangun pipeline rendering Anda sendiri.

Pilih YAMLResume jika Anda menginginkan solusi yang berpendapat, baterai-termasuk yang menangani segalanya mulai dari validasi data hingga generasi PDF profesional, dengan alat pengembang modern seperti mode watch, dukungan Docker, dan integrasi CI/CD.

Edit on GitHub

Last updated on