Skip to content

juju2013/jfever

Repository files navigation

Jfever

Jfever is (yet another) simple live static web site generator

Original idea and implementation from PuerkitoBio.

Install using: go get git.inexacte.science/juju/jfever

Features

  • Static site generator, the generated content can be copied and served by any web server
  • Plain text file and directory, no configuration file, no database. Use your favorite text editor/file manager to organize your site
  • Markdown syntax, Amber template
  • Integrated web server to see your changes live
  • Super easy deployment, no dependency hell, just one static binary to copy

Description

You'll need the following directories (their name can be changed via command line options):

  • out/: Generated content
  • src/: Source files for web pages, directory tree produce site navigation path
  • template/: Your amber templates
  • static/: Your static contents

Any change in the last 3 directories (or their sub-directories) will trigger the rebuild process and regenerate all contents. Direcotry creation, file creation and deletion will be reflected in out/ directory.

Jfever only cares about *.md files in the src directory, and about *.amber (Amber templates) in templates directory, any other files will be copied as is to out/ directory. Hidden files starting with . are ignored.

Command-line Options

The following options can be set at the command-line:

  -p, --port=          the port to use for the web server (default: 9000)
  -g, --generate-only  generate the static site and exit
  -G, --no-generation  when set, the site is not automatically generated
  -n, --site-name=     the name of the site (default: Site Name)
  -t, --tag-line=      the site's tag line
  -r, --recent-posts=  the number of recent posts to send to the templates (default: 5)
  -b, --base-url=      the base URL of the web site (default: http://localhost)
  -d, --debug          Enable debug output
  -s, --src=           the source sub-dir name (default: src)
  -o, --out=           the output sub-dir name (default: out)
  -a, --template=      the template sub-dir name (default: templates)
  -i, --static=        static content to be copied to Out/ (default: static)

Front matter

Jfever uses YAML front matter to get metadata for a post. This is a complicated way to say that you have to add blocks of text like this at the start of your posts:

---
Title: My title
Description: My short-ish description of the post.
Author: Me
Date: 2013-07-14
Lang: en
---

# Here is my post!

Etc.

The three dashes delimit the front matter. It must be there, beginning and end. Between the dashes, the part before the colon : is the key, and after is the value. Simple as that.

Keys Title, Description, Author and Date are mandatory.

Valid date formats are 2006-01-02, 2006-01-02 15h (or 2006-01-02 8h), 2006-01-02 15:04 (or 2006-01-02 8:17) or the RCF3339 format (2013-08-06T17:48:01-05:00).

Key Template can be used to choose the template (without the .amber extension) to use, default to default.

Key Index will save also the page as index.html, its value will be ignored.

Key Slug will rename the page with its value, default to all characters in filename within regex [^a-zA-Z\-_0-9] .

You can define any xxx key in the front matter and use that key/value in your template.

Demo

There a simple demonstration site under the examples/amber directory.

License

The BSD 3-Clause License.