Site builder demo

pho4cexa

Sun, 19 Nov 2017 12:31:19 -0800

All the static websites I make generally follow the same pattern: a Makefile directs the compilation of source files into website content, based on their filename extensions.

Whenever a rule processes a file the extension is stripped off, which allows me to chain rules together. For example, consider a source file named index.html.md.py, a python script that outputs markdown-format text. The following would occur:

This particular demo is very similar to what I have been using to publish my site, with some specifics omitted for simplicity.

Getting Started

Clone this repo

git clone https://tilde.town/~pho4cexa/site.git

Note: tilde.town users may do it this way instead, which is more efficient:

$ git clone ~pho4cexa/public_html/site.git

Generating the demo site

make -rRj DST=demo

Generate a site with your own sources

make -rRj SRC=mysite DST=mysite_rendered

Features

This particular implementation includes the following behavior:

Not features

The following features are useful but intentionally not included, for simplicity. You may wish to modify this, or use something else altogether, if you require them:

Sources

This is what the source structure for this website looks like:

content
├── 1.html.md
├── 2.html.md
├── 3.html
├── index.html.md.py
├── Makefile.txt -> ../Makefile
├── map.json.py
└── style.css

0 directories, 7 files

Pages

Here is an automatically-updated list of all the pages on this site, in reverse chronological order of publication.

This is not a feature of the makefile, but instead of the python script included in the example content.

Another example page
An example page written in HTML
An example page written in Markdown

Similar mechanisms:

License: AGPL-3.0+ with additional permissions

This software is released under the terms of the GNU Affero General Public License, Version 3 (or, at your option, any later version,) with a grant of additional permission that allows you to apply any terms you wish to the sites you create with it.