First Post! - Introducing blogstrap.py

Monaco
mox1
Monday, Jan 13th 2014

Blogstrap.py is an open source blogging platform / content management system written using Python. It has been built from the ground up to be simple, secure and fast. It runs on top of popular, mature web platforms and is easy to use and setup. Blogstrap.py is in its infancy and really needs the support of people like you! If your interested, join the Mailing List and add to the discussion!

The first question I asked myself before I started this was, Do I really need to create yet another blogging platform from scratch? The short answer is probably not...but it will be fun so lets do it anyway.

I have used various other web / blogging platforms over the years, including Wordpress, Drupal, Django, etc. In general, I've found these to be a bit too big, complex and hard to use. I have another simple site running Wordpress and after I installed a theme and the 10 plugins I needed (2-3 for "security", 1 for forms, 1 for SEO, etc, etc) I realized I had no idea how anything "under the hood" worked (besides it all being written in php, yuck). Good luck changing the order css loads or figuring out why 15 css and 10 javascript files are required for your site (Seriously, go install 10 popular Wordpress plugins, each adds its own CSS and js). Additionally, you're pretty much stuck using Apache (I realize you can use other options, but Apache is basically necessary for php). I run most of my sites on Digital Ocean 512mb instances and Apache eats that up fast.

I also looked at various other tools, none of which I really liked. I wanted something simple and functional. I also wanted to use Bootstrap, which I fell in love with after discovering a few months ago.

Memory usage of apache + wordpress A screenshot of memory usage with Apache + Wordpress (Not including mysql!)

In the end I decided to write my own platform. I've always loved web.py so I figured why not use that. I should be able to whip something up in a weekend, right? Well 3 months, ~35 git commits and fifteen hundred lines of code later blogstrap.py was born. At this point, blogstrap.py is mainly targeted at developers / web power users. There is no WYSISYG editor, you need to write you own html for posts. I expect people using this software to be comfortable ssh'ing into their box to manage it. I have adhered to the KISS principle as much as possible. My goal is to have a simple piece of software that is secure and "just works."

Memory usage of blogstrap.py + lighttpd A screenshot of memory usage with blogstrap.py + lighttpd

Blogstrap.py is built upon a few different technologies, mainly: web.py, peewee and sqlite. All three of these I believe most people would consider "lightweight." As you can see in the screenshots above, memory overhead is very low. Additionally there is no database running. Some may be questioning the use of sqlite but I believe that it is acceptable for 99% of the Blogs running today. If your still not convinced the DB is pluggable and you can use whatever peewee supports.

Blogstrap.py features most things you would come to expect from a simple blogging site. You can browse posts by category or subcategory, see recent posts and mark favorites. You can perform basic searches. It includes an "About" page. A basic tag system is implemented (popular tags are counted and shown). A simple comment system is available. A robust administrative interface is included where you can create and edit posts and images. There are also a few global settings. Comments can be set to on, off or manual approval (moderated).

I plan on writing another article in the next few days here explaining how to get started with blogstrap.py (UPDATE: Getting Started with blogstrap.py), until then if you are curious I suggest you head over to github (or browse the site here).