Atem Project: static site generator written in Python based on Frozen-Flask
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A static site generator like Jekyll and Hyde but targeted specifically at a git/Github based workflow to run FLOSS project sites. Made in Python based on Flask and Frozen-Flask.

  • Templates with Jinja2.
  • Markdown content with misaka and Pygments for syntax highlighting.
  • Sensibly updating the deployment directory.
  • Transforms the directory structure when mapping source to target.
  • Atom feed included.
  • Expects source to be a git repository, to gather metadata.

This is just the first pass I had on this code. In a further iteration the code will become more object oriented to be prepared for subclassing. I think I'll make an Atem-Project specific version and one that is a more general useful base version. The latter may end up in another repository, but for the moment the code has no Atem-Project specific parts.


The generator currently tries to ask git for creation and updated dates, especially for the Atom-feed generator. In the future I want to have a much deeper integration of git data, e.g. to generate API documentation from source files and include (github/bitbucket) links and commit-hashes or to create initial outlines for changelog information with the commit messages from between two git tag releases.

The use case I envision is that this runs on travis to continiously update a gh-pages branch when pushing to master. I'll leave the how-to documentation here when ready.


There's no documentation yet, feel free to help out though ;-)

TODO: Make a well commented sample project in here!

But, there is a page in production, fetch the sources from

Most important is the webgenerator.yaml file in the root directory of the source, it configures all of the page. The generated page is in the gh-pages branch. By looking at all of this you should figure out a lot. Also, read the source, Luke.


# Create a pythonvirtual environment
# I used python 3.5, you'll need 3.something `pyenv` may be the right command
# on your system, for me it was pyvenv-3.5
Atem-Webgenerator$ pyvenv-3.5

# activate the virtual environment
Atem-Webgenerator$ . venv/bin/activate

# install the dependencies
(venv) Atem-Webgenerator$ pip install -r requirements.txt

# run the development server, the virtual environment must be activated
# visit http://localhost:5000
(venv) ~/somewhere$ ./path/to/Atem-Webgenerator/ path/to/website-source-dir
# OR, inside of the website-source-dir
(venv) path/to/website-source-dir$ ./path/to/Atem-Webgenerator/

# generate a static version of the site and update a previously generated site
(venv) ~/somewhere$ ./path/to/Atem-Webgenerator/ path/to/website-source-dir path/to/target-dir
# OR, inside of the website-source-dir
(venv) path/to/website-source-dir$ ./path/to/Atem-Webgenerator/ . path/to/target-dir

# serve the generated dir for testing
# vistit http://localhost:8080
(venv) path/to/target-dir$ python -m http.server 8080