Lektor

For a long time my personal site was dynamic — built using Django and Python and hosted on Heroku. After falling off from Django as I focused my attention on Swift-er things I decided to switch to a static site builder. I had the following requirements:

Built with Python

My requirements aren’t so extensive, but I wanted to be able to understand stack traces when something went wrong

Markdown support

Previously I had stumbled into reStructuredText. I was not a fan anyway, and I find markdown far more intuitive.

Easily customisable

I would one day like to have product pages for my apps, with non-html content — e.g. site maps, json, rss.

Lektor fit all of these requirements and I have had a smooth ride ever since. The project is not as active as I would like — e.g. the RSS plugin that I use was last updated 2 years ago — but as everything currently works it will take a while before that becomes a problem. If it does become a problem, my posts are all stored in plain Markdown files.

Lektor comes with a development server, with a built in admin panel for editing content with a GUI which also helps debug pages when something goes wrong. Deployment is easy, I simply run lektor build -O build — and drag and drop the contents of the build folder into an S3 bucket.