Skip to content

Repository files navigation

cvmake

Open-source CV builder. YAML in, PDF out.

npm License: MIT CI Next.js TypeScript

→ Live demo: cvmake.codevena.dev

One YAML, four templates — classic-serif, swiss, bauhaus, noir all rendered from the same example.en.yaml
One YAML file. Four templates. Switch by changing one line.


Showcase

academic
academic
bauhaus
bauhaus
classic-serif
classic-serif
corporate
corporate
creative-accent
creative-accent
editorial
editorial
magazine
magazine
modern-minimal
modern-minimal
monochrome-dark
monochrome-dark
noir
noir
swiss
swiss
tech-dev
tech-dev

Why cvmake

You have a CV. You want to keep it in version control, render it to multiple templates, maintain it in two languages, and not pay $9/month forever for the privilege. cvmake does that.

  • One YAML file is the truth — diff in git, search with grep, copy between machines. No Word document mystery formatting.
  • 12 polished templates — academic, bauhaus, classic-serif, corporate, creative-accent, editorial, magazine, modern-minimal, monochrome-dark, noir, swiss, tech-dev — each with multiple color palettes. Same content, instant restyle.
  • Multilingual by default — author cv.de.yaml + cv.en.yaml side-by-side from one schema, switch via CLI flag.
  • High-fidelity PDF output — React + Puppeteer means your live browser preview is byte-identical to the exported PDF.
  • CLI or browsernpx @codevena/cvmake-cli build cv.yaml for terminal users, the live editor for everyone else.
  • MIT, no lockin — your data stays on your machine. Fork the schema, fork a template, add your own. The project is small enough to actually read.

Quickstart

Install + render in one shot

# 1. Scaffold a commented starter CV (cv.yaml)
npx @codevena/cvmake-cli init cv.yaml

# 2. Edit cv.yaml with your data, then render it
npx @codevena/cvmake-cli build cv.yaml

No clone required. init drops a ready-to-edit, schema-valid cv.yaml (use --lang de for German). The first build downloads Chromium (~150 MB, one-time) which is needed for high-fidelity PDF rendering.

Already have a JSON Resume?

Convert an existing jsonresume.org file and get all 12 templates instantly:

npx @codevena/cvmake-cli import resume.json cv.yaml
npx @codevena/cvmake-cli build cv.yaml

Or clone for contribution / customization

git clone https://github.com/Codevena/cvmake
cd cvmake
pnpm install
pnpm build      # builds the workspace packages once

# Copy the example to your local-only CV (cv.*.yaml is gitignored)
cp data/cvs/example.de.yaml data/cvs/cv.de.yaml

# Render a PDF
pnpm cvmake build data/cvs/cv.de.yaml

Output PDF lands in out/cv.pdf by default.

Templates

ID Style
academic Serif, two-column publication-style layout
bauhaus Geometric shapes, primary palette, Futura
classic-serif Traditional resume with serif typography
corporate Restrained corporate single-column
creative-accent Colored accent block, modern sans-serif
editorial Magazine-style with strong typography
magazine Display serif, italic, two-column body — Vogue-style
modern-minimal Minimal, lots of whitespace
monochrome-dark Dark theme, high contrast
noir Cinematic dark, cream serif, gold accent, prose entries
swiss Strict grid, Helvetica, red accent — pure information design
tech-dev Developer-focused with code-style accents

Each template ships with 3+ color palettes. List them all:

pnpm cvmake list-templates

Tech Stack

  • Monorepo — pnpm 9 workspaces + Turbo
  • Schema — Zod
  • Rendering — React 18 + Puppeteer (headless Chrome → PDF)
  • Web UI — Next.js 16 (App Router) + Tailwind CSS 4
  • CLI — Commander 12
  • Testing — Vitest, Playwright (e2e), visual regression via pixelmatch

Releasing

(Maintainers only.) All 4 published packages bump in lockstep:

pnpm -r --filter "@codevena/cvmake-{cli,core,schema,templates}" \
     exec pnpm version <major|minor|patch>
git add -p   # review the version bumps
git commit -m "release: vX.Y.Z"
git tag "v$(node -p "require('./apps/cli/package.json').version")"
git push origin main --tags

The tag push triggers .github/workflows/release.yml which runs the full test matrix and publishes all 4 packages via the NPM_TOKEN repo secret. Set the secret once via npm Granular Access Token (codevena org, read+write, long expiration) at https://github.com/Codevena/cvmake/settings/secrets/actions.

Contributing

See CONTRIBUTING.md. Bug reports, template ideas, and pull requests welcome.

See ROADMAP.md for what's planned and CHANGELOG.md for what has shipped.

License

MIT — see LICENSE.

About

Open-source CV builder. YAML in, PDF out. 12 polished templates. CLI on npm + live web editor.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages