Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Astro template that turns one YAML file into a personal site, CV, portfolio, and multi-format resumes.

Astro + Tailwind template for a fastfetch-style terminal portfolio. Configured from YAML, projects synced from GitHub, single source of truth.

Create an elegant developer portfolio and dual-PDF resumes (ATS-friendly & styled Design layout) directly from a simple JSON config file. Powered by Astro.
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.
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.
en_devops.yaml) store only the fields that change; a merge script combines them with the base CV so typo fixes propagate everywhere.languages.yml; each language gets its own resume files, social cards, and hreflang alternates.Layout.astro, plus 4 background components: CSS-only AnimatedBackground, Canvas-based GalaxyBackground, PlayStationWaves, and WaveLines.schema.org/Person structured data, sitemap, and per-page meta.BASE_URL and siteUrl resolve from GITHUB_REPOSITORY so forks work out of the box; custom domains supported via SITE_URL and BASE_PATH variables.npm run resume:import, parse a LinkedIn PDF export best-effort, or generate YAML from an LLM using the prompt in docs/LLM-CONTEXT.md.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.
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.
Yes, it explicitly requires Node 24+; run node -v to check before installing dependencies.
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.
Yes, every build generates DOCX and TXT per profile and language. The site.yml file controls which download buttons appear on the site.
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.
Yes, npm run resume:import converts JSON Resume data to YAML, and npm run resume:linkedin parses a LinkedIn PDF export best-effort.
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.
