Barn is a resume/CV static site generator that parses YAML data files and Pug templates to output a deployable static website, functioning as a resume-focused alternative to Hexo.
What is Barn?
Barn is a command-line tool that takes YAML files containing profile, education, work experience, and skills as input, renders them through Pug templates, and outputs minified HTML/CSS into a dist/ directory ready for deployment. It runs on Node.js and is created and maintained by Maples7, with the default theme authored by ShadowWood. The tool is designed specifically for building resume or CV websites that can be hosted on GitHub Pages or any static hosting service.
Key Features
- YAML-driven content — All resume data lives in YAML files under
themes/<theme>/content/; each YAML file corresponds to a page, e.g.index.ymlfor Chinese anden.ymlfor English. - Pug templating — Pages are rendered from Pug templates; custom themes place Pug files in the theme root and CSS in
./css/. - Built-in themes — Ships with
default(two-column layout, gray sidebar) andlatex(LaTeX-style single-column academic resume with serif fonts and horizontal rules). - Live-reload dev server —
barn serverstarts a local HTTP server on port 3579 with live reload that regenerates pages on file changes. - One-command deploy —
barn deploybuilds the site and pushes it to a git remote, working with GitHub Pages and other git-based static hosting. - CLI workflow — Commands include
init,generate,server, anddeploywith aliasesi,g,s, andd. - Starter template —
barn initclones the barn-starter repository and removes the.gitdirectory for a clean project start. - Debug logging — Prefix commands with
DEBUG=barn-clito enable verbose output.
Who is it for?
- Job seekers — Build a personal resume site by editing YAML files instead of hand-writing HTML, then deploy to GitHub Pages for a live URL.
- Developers — Create a custom theme by following the documented structure (Pug in root, CSS in
./css/, images in./image/, YAML starters in./content/) and submit a PR to share it. - Academics — Use the
latextheme to produce a print-friendly, single-column academic CV with a LaTeX-like appearance.
What can you do with Barn?
- Multilingual resumes: Maintain separate YAML files like
index.ymlanden.ymlto generate Chinese and English versions of the same resume from one project. - Personal portfolio site: Customize the theme's Pug templates and CSS to turn the resume into a broader personal site, since it outputs static HTML and CSS.
- Automated publishing: Set up the project once, then update only YAML data and run
barn deployeach time you need to refresh the published resume.
How does Barn work?
- Run
barn initto clone the barn-starter template intobarn-starter/. - Edit
config.ymlto choose a theme, set the deploy repository, and configure a custom domain (CNAME). - Fill in personal details in the YAML files under
themes/<theme>/content/. - Run
barn serverto preview locally on port 3579 with live reload. - Run
barn deployto generate the static site intodist/and push it to your git remote; then enable GitHub Pages.
Pricing
Barn is free and open source, released under the MIT license.
Alternatives
- Hexo — the general-purpose static site generator Barn is explicitly modeled after, though Hexo is not resume-specific.
FAQ
Is Barn free?
Yes, Barn is open-source software distributed under the MIT license, so you can use, modify, and redistribute it freely.
Which themes are included?
Barn includes two built-in themes: default, a two-column layout with a gray sidebar, and latex, a LaTeX-style single-column academic resume with serif fonts. Additional themes can be placed in the themes/ directory.
How do I deploy my resume to GitHub Pages?
Configure the deploy repository in config.yml, run barn deploy to generate the site into dist/ and push it to the remote, then turn on GitHub Pages in your repository settings.
Does Barn support multiple languages?
Yes. Each YAML file under themes/<theme>/content/ becomes a separate page. For example, index.yml can hold the Chinese version and en.yml the English version, letting you produce a multilingual site.
What are the system requirements?
Barn requires Node.js with npm (or yarn). Install it globally with npm install -g barn-cli.







