rendercv-ts
v0.1.0
Published
TypeScript port of rendercv — version-controlled CVs as code, validated and rendered to PDF/Markdown/HTML in the browser.
Maintainers
Readme
rendercv (TypeScript)
Browser-only TypeScript port of RenderCV. Validate CV YAML and render to Typst, Markdown, HTML, PDF, and PNG without a CLI.
Install
npm install rendercv-tsUsage
import {
buildRendercvModelFromYaml,
generateTypst,
generateMarkdown,
generateHtml,
generatePdf,
generatePng,
preloadTypst,
} from 'rendercv-ts';
const { model } = buildRendercvModelFromYaml(yamlText, {
assets: {
'images/photo.jpg': 'data:image/jpeg;base64,...',
},
});
const typst = generateTypst(model);
const markdown = generateMarkdown(model);
const html = generateHtml(model);
// PDF/PNG use Typst WASM — warm up once, then render
await preloadTypst();
const pdf = await generatePdf(model); // Uint8Array | null
const pngPages = await generatePng(model); // Uint8Array[] | nullRelative asset paths (for example a CV photo) must be supplied through the assets map as URLs or data URLs.
Browser setup (PDF / PNG)
The npm package ships bundled fonts and Typst WASM under node_modules/rendercv-ts/assets/. Your app must serve them as static files (typically under /fonts and /wasm).
Next.js / Vite
Copy assets into your public folder before dev/build:
# Example: copy from node_modules into public/
cp -r node_modules/rendercv-ts/assets/fonts public/fonts
cp -r node_modules/rendercv-ts/assets/wasm public/wasmThen call preloadTypst() — it auto-configures URLs from window.location.origin when you haven't set paths manually:
await preloadTypst();Manual path override
import { configureBrowserWasm, configureBrowserFonts, preloadTypst } from 'rendercv-ts';
configureBrowserWasm('https://cdn.example.com/wasm');
configureBrowserFonts('https://cdn.example.com/fonts');
await preloadTypst();Or use configureDefaultAssets({ origin: 'https://my-app.com' }) before preloadTypst().
Bundled fonts
Theme fonts are bundled locally — no Google Fonts network requests at render time.
| Family | Used by | |--------|---------| | Source Sans 3 | classic (default) | | Raleway | engineeringclassic | | XCharter | engineeringresumes, harvard | | EB Garamond | ink | | Fontin | moderncv | | Lato | opal | | Ubuntu, Gentium Book Plus | ember | | Vazirmatn | RTL / Persian / Arabic (user override) |
sb2nov uses New Computer Modern, loaded from the Typst CDN (not bundled).
Run npm run generate:fonts after npm install (requires pip to fetch rendercv-fonts, or install it with pip install rendercv-fonts).
PDF header icons use lightweight inline SVG presets (~22 icons).
Development
npm install
npm run typecheck
npm test
npm run buildPDF golden fixtures are produced by Typst WASM and may differ from Python typst-cli output. Regenerate them with:
UPDATE_TESTDATA=1 npm test -- tests/renderer/pdf-png.test.tsLicense
MIT
