# zapata

Extremely minimal static site generator: handlebars + markdown + frontmatter

# Installation

```
npm install -g zapata
```

# Getting started

To create yourself a simple starting point:

```
zapata create mysite
```

You write posts (articles, pages) as markdown `.md` files in the `posts` directory. A single `template.html` file (in Handlebars format) is used to convert each post into an HTML page.

To generate the site as plain HTML, run this from anywhere inside `mysite`

```
zapata generate
```

Optionally you can pass the path to your site's source directory.

This creates (or replaces) a sub-directory called `generated`. Everything is copied into `generated` (apart from the raw `template.html` and `posts`), so you can include images and `.css` resources and other pages required by your template.

Posts are converted to `.html` files at the root level.

The generated `index.html` file is just a redirector that switches to the latest post.

So in summary:

- Customise the `template.html` file to get the look you want.
- Write posts in the `posts` directory.
- Run `zapata generate` to produce the `generated` sub-directory that is ready to be deployed.

# Structure of a post

A post must start with a frontmatter section, which is a YAML object inside `---` lines:

```
---
title: The introductory page of this site
posted: 2019-12-14
author: Octavia Optimism
---
```

The `title` and `posted` properties are mandatory. Posts are sorted by the `posted` data (most recent first).

Any other properties you define are exposed to the template as an object called `data`. The example demonstrates every feature of the template data model.

# License

MIT
