unify

A static site generator for people who'd rather write plain HTML. Write a layout, nav or footer once and it lands on every page. No template language, no framework, no JavaScript of its own. This site is built with it.

Get started Full docs and examples ↗

A layout at a glance

One complete HTML page in src/_layout.html is the site's chrome. Every page lands in its <main>; a page can fill a named slot or leave its fallback.

<!doctype html>
<html>
  <head>
    <title>· My Site</title>
    <link rel="stylesheet" href="/assets/style.css">
  </head>
  <body>
    <include src="/_includes/nav.html"></include>
    <main><slot></slot></main>
    <footer><slot name="footer"><p>© My Site</p></slot></footer>
  </body>
</html>

The whole surface

Layouts

The nearest _layout.html wraps every page in its folder. Pages never name it.

Includes

<include src> splices a fragment in. Content between the tags fills the fragment's slots.

Slots

<slot name> in a layout, slot= on a page element. Standard HTML, no new syntax.

Markdown

A .md file is a page too. Frontmatter supplies the head; the layout applies the same way.

Why unify?

Most generators ask you to learn a template language and a config format before you write a page. unify asks for HTML. The output is exactly your markup, so what you see in src/ is what ships.

A framework

Templates, variables, a build config, a client runtime.

vs

unify

Plain HTML and Markdown, composed once at build time.

Built in

Checked links

Every internal link is checked against the output. A broken one fails the build, and nothing is published.

Feeds, sitemaps, JSON-LD

Declare a page's schema and give the site its address: unify writes the feed, the sitemap and the structured data.