% Prosody IM Static Site Generator

# Introduction

This is a simple static site generator for <https://prosody.im/>. The
pages were migrated from our old DokuWiki instance, including history,
into Markdown files in a Mercurial repository.

# Contributing

The site is managed with Mercurial, just like Prosody. See the page
[Contributing](/doc/contributing) for general instructions.

# Syntax

The site uses [Pandocs
Markdown](https://pandoc.org/MANUAL.html#pandocs-markdown). A short
summary of the most commonly used syntax can be found in
[`wiki/syntax.md`](/wiki/syntax).

# Requirements

## For building

-   [GNU Make](https://www.gnu.org/software/make/)
-   [Pandoc](https://pandoc.org/)
-   [Mercurial](https://www.mercurial-scm.org/)

## Theme

-   [Bootstrap](https://getbootstrap.com/)

# Building

`make`
:   Builds the entire site

# Special files

Apart from `GNUmakefile` which contains the rules and relationships
between source files and finished HTML pages, there's `_template.html`
which is the HTML template that the source Markdown files are combined
with into HTML pages.

The page `_dirindex.md` also has some special treatment, as it is meant
for [the Nginx Fancy Index
module](https://www.nginx.com/resources/wiki/modules/fancy_index/) to
produce directory listings. Because of how that module needs separate
header and footer files, after `_dirindex.html` is built, `sed` is used
to split it into `_dirindex_header.html` and `_dirindex_footer.html`.

# Serving

Because there were no `.html` file extensions in Dokuwiki, all links are
broken unless some rewrite tricks are used.

For nginx, it goes something like this:

```
location / {
    index index.html start.html;
    try_files $uri.html $uri $uri/ =404;

    location ~* (/.+)/$ {
        try_files $1.html $uri $uri.html $uri/ =404;
    }
}
```

