Webloft
A static website generator written in Python3, supporting multiple templates.
The repository is public on GitHub.
License
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:
- index.yaml
- logo.png
- project_directory1
- project.yaml
- project_directory2
- project.yaml
- project_directory...
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.