{"id":27488244,"url":"https://github.com/yamlresume/yamlresume","last_synced_at":"2026-04-01T16:47:04.581Z","repository":{"id":287130375,"uuid":"963128693","full_name":"yamlresume/yamlresume","owner":"yamlresume","description":"Resumes as code in YAML, brought to you with ❤️ by PPResume.","archived":false,"fork":false,"pushed_at":"2026-03-26T02:01:14.000Z","size":9519,"stargazers_count":1291,"open_issues_count":24,"forks_count":58,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-26T22:19:20.572Z","etag":null,"topics":["curriculum-vitae","curriculum-vitae-template","cv-builder","cv-template","json-resume","jsonresume","latex","markdown","resume","resume-builder","resume-template","typescript","typesetting","typography","yaml","yaml-resume","yamlresume"],"latest_commit_sha":null,"homepage":"https://yamlresume.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yamlresume.png","metadata":{"files":{"readme":"README-fr.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"buy_me_a_coffee":"xiaohanyu"}},"created_at":"2025-04-09T07:47:08.000Z","updated_at":"2026-03-26T14:50:26.000Z","dependencies_parsed_at":"2026-01-17T11:08:41.949Z","dependency_job_id":null,"html_url":"https://github.com/yamlresume/yamlresume","commit_stats":null,"previous_names":["ppresume/engine","yamlresume/yamlresume"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/yamlresume/yamlresume","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamlresume%2Fyamlresume","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamlresume%2Fyamlresume/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamlresume%2Fyamlresume/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamlresume%2Fyamlresume/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yamlresume","download_url":"https://codeload.github.com/yamlresume/yamlresume/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamlresume%2Fyamlresume/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31218718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T03:44:21.648Z","status":"ssl_error","status_checked_at":"2026-03-31T03:43:51.577Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curriculum-vitae","curriculum-vitae-template","cv-builder","cv-template","json-resume","jsonresume","latex","markdown","resume","resume-builder","resume-template","typescript","typesetting","typography","yaml","yaml-resume","yamlresume"],"created_at":"2025-04-16T19:55:29.430Z","updated_at":"2026-04-01T16:47:04.564Z","avatar_url":"https://github.com/yamlresume.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/xiaohanyu"],"categories":["Utilities","Projects Using Zod","TypeScript"],"sub_categories":["Professional: Resume"],"readme":"# YAMLResume\n\n[English](./README.md) | [日本語](./README-ja.md) | [简体中文](./README-zh-cn.md) | [繁體中文](./README-zh-tw.md)\n\n\u003c!-- Build, Quality \u0026 Docs --\u003e\n[![GitHub CI](https://github.com/yamlresume/yamlresume/workflows/test/badge.svg)](https://github.com/yamlresume/yamlresume/actions/workflows/test.yml)\n[![Codecov](https://img.shields.io/codecov/c/github/yamlresume/yamlresume?style=flat-square\u0026logo=codecov)](https://codecov.io/gh/yamlresume/yamlresume)\n[![Security Rating](https://img.shields.io/badge/Security-A+-brightgreen?style=flat-square\u0026logo=shield)](https://github.com/yamlresume/yamlresume/security)\n[![Documentation](https://img.shields.io/badge/docs-yamlresume.dev-blue?style=flat-square\u0026logo=gitbook)](https://yamlresume.dev/fr)\n[![Discord](https://img.shields.io/discord/1371488902023479336?style=flat-square\u0026logo=discord\u0026color=5865F2)](https://discord.gg/9SyT7mVV4K)\n\n\u003c!-- Package \u0026 Distribution --\u003e\n[![Node.js Version](https://img.shields.io/node/v/yamlresume.svg?style=flat-square\u0026logo=node.js\u0026color=339933)](https://nodejs.org/)\n[![npm version](https://img.shields.io/npm/v/yamlresume.svg?style=flat-square\u0026logo=npm)](https://www.npmjs.com/package/yamlresume)\n[![npm downloads](https://img.shields.io/npm/dm/yamlresume.svg?style=flat-square\u0026logo=npm\u0026color=CB3837)](https://www.npmjs.com/package/yamlresume)\n[![Docker Pulls](https://img.shields.io/docker/pulls/yamlresume/yamlresume.svg?style=flat-square\u0026logo=docker)](https://hub.docker.com/r/yamlresume/yamlresume)\n[![Docker Image Size](https://img.shields.io/docker/image-size/yamlresume/yamlresume/latest.svg?style=flat-square\u0026logo=docker\u0026color=2496ED)](https://hub.docker.com/r/yamlresume/yamlresume)\n\n\u003c!-- Technology Stack --\u003e\n[![LaTeX](https://img.shields.io/badge/LaTeX-Typesetting-008080?style=flat-square\u0026logo=latex)](https://www.latex-project.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue?style=flat-square\u0026logo=typescript)](https://www.typescriptlang.org/)\n[![PNPM](https://img.shields.io/badge/PNPM-Workspace-orange?style=flat-square\u0026logo=pnpm)](https://pnpm.io/)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-FE5196?style=flat-square\u0026logo=conventionalcommits)](https://conventionalcommits.org)\n[![Biome](https://img.shields.io/badge/Biome-Linted-60a5fa?style=flat-square\u0026logo=biome)](https://biomejs.dev/)\n[![Vitest](https://img.shields.io/badge/Vitest-Tested-6E9F18?style=flat-square\u0026logo=vitest)](https://vitest.dev/)\n\n\nRédiger un CV n’est peut‑être pas difficile, mais ce n’est clairement pas amusant et c’est fastidieux.\n\n[YAMLResume](https://yamlresume.dev/fr) vous permet de gérer et de versionner vos CV avec [YAML](https://yaml.org/) et de générer en un clin d’œil des PDF professionnels avec une belle composition typographique.\n\n![YAMLResume YAML and PDF](./docs/static/images/yamlresume-yaml-and-pdf.webp)\n\n## Principe de conception\n\nCe projet a commencé comme le moteur de composition typographique de base de\n[PPResume](https://ppresume.com/?ref=yamlresume), un générateur de CV « pixel perfect » basé sur LaTeX. Après mûre réflexion, nous avons décidé de l’ouvrir pour que chacun puisse toujours avoir le droit de dire [non au verrouillage fournisseur](https://blog.ppresume.com/posts/no-vendor-lock-in).\n\nLe principe de conception au cœur de YAMLResume est la [séparation des responsabilités](https://fr.wikipedia.org/wiki/S%C3%A9paration_des préocupations). L’un des exemples les plus célèbres qui suit ce principe est HTML \u0026 CSS, fondations du web moderne — HTML organise le contenu d’une page, CSS définit son style de présentation.\n\nEn suivant ce principe, YAMLResume satisfait aux exigences suivantes :\n\n- le contenu du CV est rédigé en texte brut\n- le texte est structuré avec YAML — YAML est plus lisible et plus facile à écrire que JSON\n- le YAML est ensuite rendu en PDF via un moteur de composition interchangeable\n- la mise en page est ajustable via des options comme les tailles de police, les marges, etc.\n\n## Démarrage rapide\n\nSi vous avez Docker installé, vous pouvez démarrer `yamlresume` en une seconde ; l’image contient `yamlresume` et toutes ses dépendances :\n\n[![Démo Docker YAMLResume](https://asciinema.org/a/722057.svg)](https://asciinema.org/a/722057)\n\nSinon, vous pouvez installer `yamlresume` avec votre gestionnaire de paquets préféré :\n\n```\n# avec npm\n$ npm install -g yamlresume\n\n# avec yarn\n$ yarn global add yamlresume\n\n# avec pnpm\n$ pnpm add -g yamlresume\n\n# avec bun\n$ bun add -g yamlresume\n```\n\nVérifiez que `yamlresume` est bien installé :\n\n```\n$ yamlresume help\nUsage: yamlresume [options] [command]\n\nYAMLResume — Resume as Code in YAML\n\n __   __ _    __  __ _     ____\n \\ \\ / // \\  |  \\/  | |   |  _ \\ ___  ___ _   _ ___  ___   ___\n  \\ V // _ \\ | |\\/| | |   | |_) / _ \\/ __| | | / _ \\/ _ \\ / _ \\\n   | |/ ___ \\| |  | | |___|  _ \u003c  __/\\__ \\ |_| | | | | | |  __/\n   |_/_/   \\_\\_|  |_|_____|_| \\_\\___||___/\\____|_| |_| |_|\\___|\n\n\nOptions:\n  -V, --version                  output the version number\n  -v, --verbose                  verbose output\n  -h, --help                     display help for command\n\nCommands:\n  new [filename]                 create a new resume\n  build [options] \u003cresume-path\u003e  build a resume to LaTeX and PDF\n  dev [options] \u003cresume-path\u003e    build a resume on file changes (watch mode)\n  languages                      i18n and l10n support\n  templates                      manage resume templates\n  validate \u003cresume-path\u003e         validate a resume against the YAMLResume schema\n  help [command]                 display help for command\n```\n\nVous devez ensuite installer un moteur de composition typographique,\n[XeTeX](http://yamlresume.dev/docs#install-typesetting-engine) ou\n[Tectonic](http://yamlresume.dev/docs#install-typesetting-engine), afin de générer des PDF.\n\nEnfin, nous vous recommandons d’installer la police [Linux\nLibertine](http://yamlresume.dev/docs#linux-libertine-font) pour obtenir les meilleurs rendus.\n\nConsultez notre [guide d’installation](http://yamlresume.dev/docs/installation) pour plus de détails.\n\n## Créer un nouveau CV\n\nVous pouvez créer votre propre CV en clonant l’un de nos exemples\n[ici](./packages/cli/src/commands/fixtures/software-engineer.yml). Une fois l’exemple en local, vous pouvez générer un PDF :\n\n```\n$ yamlresume new my-resume.yml\n✔ Created my-resume.yml successfully.\n\n$ yamlresume build my-resume.yml\n✔ Generated resume tex file successfully: my-resume.tex\n◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...\n✔ Generated resume pdf file successfully: my-resume.pdf\n✔ Generated resume markdown file successfully: my-resume.md\n✔ Generated resume html file successfully: my-resume.html\n```\n\nVous pouvez également utiliser la [commande `dev`](https://yamlresume.dev/fr/docs/cli#dev) pour\nreconstruire le CV à chaque modification de fichier, offrant **une expérience moderne de type développement web** :\n\n```\n$ yamlresume dev my-resume.yml\n✔ Generated resume tex file successfully: my-resume.tex\n◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...\n◐ Watching file changes: my-resume.yml...\n✔ Generated resume pdf file successfully: my-resume.pdf\n✔ Generated resume markdown file successfully: my-resume.md\n```\n\nConsultez le PDF généré [ici](./docs/static/images/resume.pdf).\n\n![Software Engineer Page 1](./docs/static/images/resume-1.webp)\n![Software Engineer Page 2](./docs/static/images/resume-2.webp)\n\n[PPResume Gallery](https://ppresume.com/gallery/?ref=yamlresume) propose une\ngalerie de tous types de CV, classés par langues et modèles.\n\nPlus d’exemples arrivent bientôt !\n\n## Valider les CV\n\nYAMLResume fournit un\n[schéma](https://yamlresume.dev/fr/docs/compiler/schema) intégré permettant de\nvalider les CV et d’éviter de nombreuses erreurs de base. Démonstration :\n\n[![Démo du compilateur YAMLResume](https://asciinema.org/a/728098.svg)](https://asciinema.org/a/728098)\n\n## Composition typographique\n\nYAMLResume adopte [LaTeX](https://www.latex-project.org/) comme moteur de\ncomposition par défaut, référence dans l’édition académique et technique.\n\nEn suivant les [bonnes pratiques de composition d’un CV](https://docs.ppresume.com/guide?ref=yamlresume), YAMLResume garantit des CV **Pixel Perfect**.\n\nIl supporte également les [moteurs de mise en page basés sur HTML/CSS](https://yamlresume.dev/docs/layouts/html), ce qui vous permet de générer des CV adaptés au web.\n\n## Écosystème\n\nYAMLResume fournit un ensemble d’outils pour créer, convertir et gérer vos CV plus efficacement. Voici quelques utilitaires clés :\n\n- [@yamlresume/playground](https://www.npmjs.com/package/@yamlresume/playground)\n  est un composant React pour construire votre propre éditeur de CV. Il alimente le\n  [Playground](https://yamlresume.dev/playground) officiel.\n\n- [create-yamlresume](https://yamlresume.dev/fr/docs/ecosystem/create-yamlresume)\n  facilite le démarrage d’un projet YAMLResume avec une simple commande. Il\n  prépare l’arborescence, installe les dépendances nécessaires et génère un\n  exemple de CV pour commencer immédiatement. Essayez avec\n  `npx create-yamlresume my-resume` ou des commandes similaires pour `npm`,\n  `yarn`, `pnpm` ou `bun`.\n- [json2yamlresume](https://yamlresume.dev/fr/docs/ecosystem/json2yamlresume) est un\n  outil CLI pour convertir des fichiers [JSON Resume](https://jsonresume.org/) au\n  format YAMLResume.\n\n## Contribuer\n\nCe projet est encore en développement actif ; nous travaillons en continu sur de\nnouvelles fonctionnalités et corrections de bugs. L’API publique n’est pas encore\ntotalement stable, merci de votre patience.\n\nToute forme de contribution est grandement appréciée ! Merci de lire le\n[guide de contribution](./CONTRIBUTING.md) avant d’ouvrir une pull request.\n\n### Historique des étoiles\n\n[![Courbe d’étoiles YAMLResume](https://api.star-history.com/svg?repos=yamlresume/yamlresume\u0026type=Date)](https://www.star-history.com/#yamlresume/yamlresume\u0026Date)\n\n## Feuille de route\n\n- [ ] davantage de modèles de CV\n- [ ] davantage de moteurs de mise en page (typst, docx)\n\n## Soutenir le projet\n\nSi YAMLResume vous est utile, envisagez de soutenir le projet :\n\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black)](https://buymeacoffee.com/xiaohanyu)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamlresume%2Fyamlresume","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyamlresume%2Fyamlresume","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamlresume%2Fyamlresume/lists"}