CV Hub is an Astro 7 static-site template that builds a personal website, CV, and project portfolio from YAML files, then generates PDF, DOCX, TXT, and ATS-safe resumes from the same data.
What is CV Hub?
CV Hub is a static-site generator template for developers and designers who want their resume and portfolio to live in Git. It takes YAML files under src/content/cv/ as input and produces a full static website plus downloadable resume files for every profile and language. The project is developed by Alexander Gusarov and is MIT-licensed, with the live demo at keegooroomie.github.io/cv_hub being the author's real CV. It runs on Astro 7, uses Zod schemas for YAML validation, requires Node 24+, and deploys automatically to GitHub Pages via GitHub Actions.
Key Features
- One-source multi-format resumes — Every build produces PDF, DOCX, TXT, and a separate single-column ATS-safe PDF per language and profile; PDFs are rendered with Playwright.
- Multi-profile deltas — Role-specific CV variants (e.g.
en_devops.yaml) store only the fields that change; a merge script combines them with the base CV so typo fixes propagate everywhere. - Multi-language from one source — EN, RU, or any language configured in
languages.yml; each language gets its own resume files, social cards, and hreflang alternates. - Case-study pages — Per-project deep dives generated automatically from YAML blocks: text, image, video (local or YouTube), code, divider, and links, with optional anchor deep-linking.
- Theming and backgrounds — 4 built-in themes (frosted, light, nordic, peachy) swapped via CSS import in
Layout.astro, plus 4 background components: CSS-onlyAnimatedBackground, Canvas-basedGalaxyBackground,PlayStationWaves, andWaveLines. - Social cards and SEO — Open Graph images auto-generated per language on every build,
schema.org/Personstructured data, sitemap, and per-page meta. - Zero-config deployment — GitHub Actions workflow deploys on push;
BASE_URLandsiteUrlresolve fromGITHUB_REPOSITORYso forks work out of the box; custom domains supported viaSITE_URLandBASE_PATHvariables. - Import paths — Import from JSON Resume via
npm run resume:import, parse a LinkedIn PDF export best-effort, or generate YAML from an LLM using the prompt indocs/LLM-CONTEXT.md.
Who is it for?
CV Hub is for people who apply as more than one thing — e.g. DevOps and fullstack — and want one source of truth instead of multiple drifting resumes. It suits developers who want to own their site with no platform account or subscription, and people who need EN/RU CVs from a single source. The author notes that if you need one resume, in one language, for one role, a plain PDF is a better tool.
What can you do with it?
- DevOps/Fullstack engineers — maintain a base CV plus small role deltas and generate separate PDF/DOCX/TXT sets for each role from one YAML file.
- Designers — use the project-card showcase and case-study pages to present visual work with media galleries and looping video covers.
- Multilingual job seekers — write one CV per language and get PDF, DOCX, TXT, ATS PDF, and social cards per language automatically.
- ATS-conscious applicants — link the single-column Arial/Helvetica ATS PDF to parsers while giving human recruiters the two-column typeset PDF.
How does it work?
The build pipeline runs npm run build: merge.mjs combines base and delta YAMLs into public/cv/, then DOCX and TXT are generated, Playwright renders PDF and ATS PDF, Astro builds the static site, and generate-og-image.mjs creates social cards. On a fresh fork, npm run init wipes the example CV and reseeds from docs/examples so you start with a blank placeholder.
FAQ
Does CV Hub require Node 24?
Yes, it explicitly requires Node 24+; run node -v to check before installing dependencies.
Does CV Hub work with a custom domain?
Yes, set SITE_URL and BASE_PATH as repo variables, add a public/CNAME file containing your domain, and point your DNS at GitHub Pages per GitHub's guide.
Can I output a resume in DOCX?
Yes, every build generates DOCX and TXT per profile and language. The site.yml file controls which download buttons appear on the site.
Is there a free demo?
The live demo at keegooroomie.github.io/cv_hub is the author's real CV; there is intentionally no separate demo deployment — what you see is what your fork becomes.
Can I import from JSON Resume?
Yes, npm run resume:import converts JSON Resume data to YAML, and npm run resume:linkedin parses a LinkedIn PDF export best-effort.
Alternatives
Alternatives mentioned on the page include RenderCV and YAMLResume (typeset PDF from YAML, but no ATS variant), JSON Resume (schema but partial DOCX), Reactive Resume (GUI with database), and generic Astro or Hugo portfolio themes (site only, no resume pipeline). The comparison table in the README scores each tool by scope, not quality.








