Show HN: Single file static microblog generator
GitHub - john-bokma/tumblelog: A static tumblelog generator available as both a Perl and Python version
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


Installation of the Perl version: to be written, for now see: Create a static tumblelog with Perl


Installation of the Python version


Testing tumblelog


Getting started


Using a Makefile


Keeping your tumblelog under version control


Style Examples

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

Plurrrr: a tumblelog - by John Bokma

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.
