Webloft

A static website generator written in Python3, supporting multiple templates.

The repository is public on GitHub.

License

MIT

Why

When the idea of a personal website came to my mind, I automatically started thinking about what piece of technology I could possibly use. I'm not a big nodejs fan, nor a "dynamic web" enthusiast in general. Especially in very static contexts, like an informative personal website, I strictly believe that good old static pages are the right path.

While there are other solutions out there for static sites, I find many of them either too limited or too engineered. This is how the idea came into being, and this website with it.

Usage

The tool can be installed via the typical setup.py or can be used directly through main.py.

When installed, the tool can be called simply by the use of the webloft command.

webloft [path]

The given path (default: current directory) should lead to a directory having the following structure:

Yaml files are where the user data goes. Webloft will read the data and use it to customize one of its internal templates. The result will be found in the dist directory (a bunch of html and css files, completed with the user data).

index.yaml is the only mandatory file. Project subdirectories will be used to generate the "projects" page.

Example index.yaml:

name: Sherlock Holmes
description: 'Definitely the **best** detective you can dream of.'
contacts:
  - name: Address
    display: 221B Baker Street

Some values support markdown (in the example above, the description field uses markdown).

For a complete description of the configuration files and supported fields see the GitHub wiki.

How does it work

Internally, the django template system is used. Markdown is parsed using python-markdown.

FAQ

Can I build my own template?

With enough understanding of the project's structure, yes.

Is Internet Explorer supported?

If you're using this tool to build your resumee, you probably don't want to work for anyone reading it with IE. The main template does not support IE.