Dynastie is a static blog generator. In facts, it's a Django (1.8) application aimed to generate static blogs.
Why Dynastie ?
There is an uncountable number of static blog generators : it's so simple to build one that anyone want to code it. Previously, I used Joomla, but I found it heavy for something as simple as my blog. The second point is that I wanted to serve compressed static HTML pages because I have a low debit connexion (nginx is perfect for this job). Other criterias were :
- Not written in Ruby
- Have a web interface with a WYSIWYG editor
- Gzip compression of generated output
- Not using Mako/Jinja/Cheetah (Python template engines)
- Not using Disqus for comments management
- Be simple
- Have classic blog features : images, RSS, archives, tags, search, comments...
I didn't found a solution that fit all these requirements and started to code my own in PHP, but quickly found complex without a framework. Then, I tried Django for the first time and was under the charm : quick and simple. Some people says it's a bad copy or RoR, but I don't care, I write Python not Ruby.
How does it works ?
Like other static blog generator, Dynastie merge three types of data to produce the website. Posts are stored (in HTML format) in files, while meta information (comments, tags, category..) are stored in a SQLite database (easy, supports SQL queries and portable). Templates are also stored in HTML format. In facts, Dynastie acts like an XSLT processor to produce the output. I wanted to keep close to the HTML/xml philosophy which is the language of the web. As all is a file, you can easily backup your website and export it to another generator.
The templates are the most opened as possible : there is a only a few variables to use. It let the user design its website as he wants. The main generated files are indexes for index, tag, categories... and RSS/Atom feeds. All file/directory that do not starts with "_" is copied to the output : no need to specify long lists of files/directories.
Eat your own dog food
The best example of all possibilities that offers Dynastie is the output of my own personal blog. It's integrated directly into the sources.
- Index in descending order (with published/front page attributes)
- RSS/Atom feeds (only one by website)
- Comments (dynamic)
- Search (dynamic)
- WYSIWYG editor (on line) with images management
- Markdown syntax support
- Code coloration (using Pygments)
- Multi blogs
- User management
- Content is generated only if necessary
- Fail2ban filter for robots that tries to add SPAM in comments
Comments are handled dynamically, it regenerates only the commented page, but not the entire website.
Be careful, the real "email" field in your form must have "mel" name. If the field with "email" as name is found and is not empty, it's considered as a spamming bot and the comment will not be added.
The current version is 0.4. The design is very poor (raw Django forms), but I have no time, no wish and no talent to work on it : It's simple. The best design I've made for Dynastie is the logo of my blog :)
Dynastie (dynasty) stands for DYNAmique STatIquE (dynamic static) : it combines a STATIC blog generator to a DYNAMIC web interface.