Home

Awesome

tumblelog: a static microblog generator

tumblelog is a static microblog generator. There are two versions available, one written in Perl and one written in Python. Which version you use is up to you; I make an effort to keep the output of both versions identical.

The input is a single "Markdown" file divided into pages by starting a line with a date followed by a title. Each date page can further be split up into multiple articles using a single % on a line by itself.

Parameters to control the blog are given via command line arguments. The program creates the blog HTML5 pages and both a JSON and RSS feed.

Python Version Quick Start

Install sass and pip3 for Linux:

sudo apt install -y git sass python3-pip

For macOS:

brew install sass
brew install pip3

Then:

git clone https://github.com/john-bokma/tumblelog.git
cd tumblelog
python3 -m venv venv
pip3 install commonmark
pip3 install regex
source venv/bin/activate
mkdir htdocs

Generate a stylesheet. I use steel for example. See the directory styles for others you can use (except the ones that start with an underscore).

sass --sourcemap=none -t compressed styles/steel.scss htdocs/steel.css

To generate a version of the example site that does not use tags use:

python3 tumblelog.py --template-filename tumblelog.html \
        --output-dir htdocs/ \
        --author 'Test' --name 'Test Blog' --description 'This is a test' \
        --blog-url 'http://localhost:8000/' --css steel.css \
        tumblelog.md

To generate a version of the example site that uses tags (recommended) use:

python3 tumblelog.py --template-filename tumblelog-tags.html \
        --output-dir htdocs/ \
        --author 'Test' --name 'Test Blog' --description 'This is a test' \
        --blog-url 'http://localhost:8000/' --css steel.css --tags \
        tumblelog-tags.md

To view the generated site at http://localhost:8000/ enter:

cd htdocs
python3 -m http.server

Documentation

Style Examples

A screenshot of the four styles that come with tumblelog

A screenshot of four of the twelve styles that come with tumblelog.

The screenshots directory has 1:1 examples of themes that come with tumblelog.

Blogs

If you want your tumblelog generated site listed here, please let me know.

Docker (Experimental)

This assumes you have already used Sass to create a CSS file and copied it into a directory for your website.

To create a Perl image use:

docker build --tag tumblelog/perl -f perl.Dockerfile .

To run the container use (version with tags):

docker run --rm --volume "`pwd`:/data" --user `id -u`:`id -g` \
       tumblelog/perl --template-filename tumblelog-tags.html \
       --output-dir htdocs/ \
       --author 'Test' --name 'Test Blog' --description 'This is a test' \
       --blog-url 'http://localhost:8000/' --css steel.css --tags \
       tumblelog-tags.md

To create a Python image use:

docker build --tag tumblelog/python -f python.Dockerfile .

To run the container use (version with tags):

docker run --rm --volume "`pwd`:/data" --user `id -u`:`id -g` \
       tumblelog/python --template-filename tumblelog-tags.html \
       --output-dir htdocs/ \
       --author 'Test' --name 'Test Blog' --description 'This is a test' \
       --blog-url 'http://localhost:8000/' --css steel.css --tags \
       tumblelog-tags.md

Both containers run in a GMT timezone. To change this set the TZ variable, e.g. TZ="Europe/Amsterdam". See Timezones in Alpine Docker Containers.