Webgurl struck by Bolt CMS
It occurred to me recently that I hadn't updated my blog in over a year, and my portfolio's been neglected for much longer than that. The realities of being busy with work and life, you know how it is. Since I'm on vacation this week I decided it would be the perfect time to give them a little refresh. Except, my blog is over on Blogger and my portfolio is a hacked together mish-mash I slapped together before a few job interviews years ago. It's such a PITA to update either of these things.
What about migrating it all to WordPress? YES! That's exactly what I started to do about 2 years ago, and 2 years before that, and a few weeks ago actually. The importer mostly worked, but I had to tweak most of the posts because some stuff just didn't migrate over well. Oh, and then there was the theme... damn you WP! I just start to like you again, then I see all that 1990s shit going on inside the theme code and back away slowly.
Time for a beer to get me through this.
There have been some amazing projects to bring WP up to speed with modern web dev tools. Since WP is the main ingredient at work I've adopted Roots Bedrock & Sage to help keep me sane. I had every intention of going down this road for my refreshed site & blog... as soon as I found a solution to this whole theme stuff.
I played around with the restful API and this felt the most natural option for me. The only drawback here is that it's fairly new and so I'd have to make a lof of things from scratch. That is in direct opposition of my goal to have something I can quickly & easily update.
Just go with it and dive into WP Theming
I took a serious deep dive into the world of WP Theming. I really tried to just go with it but there's no separation of concerns. It starts as spaghetti and just turns into more tangled spaghetti as I work with it. There's so much business logic mixed into the views and trying to keep it organized leads me to contemplate re-writing parts of core so I don't have to feel so dirty about all these freaking global functions and I think that's why they built the resftul API and don't even get me started on TDD with WP and ... breath ... it hurts my brain. A lot.
Integrate a theming lib into WP
I found myself craving Laravel's Blade, or the mustache-like syntax of almost every JS framework I've used in the past 5 years. There were some great looking options that would probably answer the call of having easier to maintain theme files... but it occurred to me that WP was just too much. It's trying so hard to do all the things and I only need it to do a few things.
All the dependencies
The reality is that I just want a low maintenance CMS that I can set up quickly, customize when I have time to tinker and not have to mess around with too many dependencies. WP is just a beast, and while it's a great option for some situations it's not really what I need.
For once reading the comments pays off
In my earlier search for a WP theming plugin I stumbled across a mention of Bolt. I read a bit about it and thought it was worth investigating for this other project I'm working on. Then a few days ago I decided to give it a try, and what better way to evaluate it then to see if I could use it for my site & blog refresh. It's only been a few days but so far it's been a pleasure to work with and I've been much more productive with it than other CMSs or frameworks.
If you're a developer looking for a lightweaight CMS that gives you FULL control over your templates, you should totally give Bolt a spin. It really has been a joy knocking out a custom theme in an afternoon. It just makes so much sense to my programmer brain, it gets out of my way and lets me do what I do best :) The brains behind Bolt clearly had developers in mind when they built this. If you want to extend it, put your existing OOP knowledge to work and extend a few classes (knowledge of Silex is helpful), then pull them in via composer. Want to build out the front end using whatever tech suits your fancy? You can do eet! I'm not a fan of some of the stuff it puts in the config files, but I think I could easily create an extension to handle those bits more dynamically. Looks like they already support dynamic configs. Cool.
Bolt isn't all shiny rainbows and unicorns
Nothing is ever perfect, and right now I wouldn't recommend using Bolt 3.0 for production... unless you don't mind tinkering a bit with things to get it just right. Since I prefer to tinker a bit I of course chose to use it for webgurl ;). So far here are the issues I've run into while deploying to my staging/production servers:
- Doesn't work at all with an IP based url - I played around with a bunch of config settings and then came across this and this, this and also this (the one that matched my issue), so it seems Bolt has some CSRF issues. I wasn't able to resolve this which was a huge PITA since I don't always have a hostname for dev or staging environments.
- Crashed with PHP memory limit of 32M - I updated php.ini to memory_limit = 64M which was an easy fix, although I'm still perplexed at how one tiny little app couldn't run with 32M. Aside from some major bloated WP apps, this is the default for all my PHP apps.
- Didn't install extensions when deployed to new environment - I installed the Disquss extension and configured and tested locally. When I ran the first deploy to production all my entry pages were broken because it couldn't find the disqus method. For some reason it just didn't get installed.
I had to re-install it from the admin panel which is kind of a drag since it should have been automagically done behind the scenes with composer.
- The WordPress importer extension isn't available for the latest version of Bolt... I expect this'll change soon.
Even with the issues I've run into, I'm using it for my site (what you see here) and am evaluating it for another side project I've got on the go. I'm also evaluating AsgardCMS and plan to do some reviews as I get more acquainted with either... or both, so stay tuned.