Going Steady with Stacey

And we’re back! After months in the making, desandro.com v2.1 is live.

For those of who are reading this via feed reader, I apologize for the big blip with the feed.

The site is now running on Stacey. It’s pretty neat! Working with Stacey is not just changing flavors of CMS, it’s an entire paradigm shift. Content and templates no longer live within a database that is accessed through an admin section. Instead, the entire site is managed through the file system as a basic collection of files and folders. Every time I want to publish a new article, I create a separate folder and with required text file. Explaining the setup to Dan, he appropriately responded “Why would you ever want to do that?”

Simply put, the typical CMSs that have risen to popularity in the past decade have were designed for a different kind of site. They expect to display multiple entries of content with similar views. My site, and the many others like it, break from this mold. For each entry, there is a unique view. After maintaining my site through one of those CMSs (Textpattern) for the past year, it became clear that it wasn’t the right tool for the job. Stacey addresses several of the biggest hang-ups I encountered.

Everything on the site lives together in one happy home. The files are grouped together by entry. For a site like mine, where each entry has its own particular resources like CSS, JS, images, etc, this is especially beneficial as I don’t have to hunt down the whereabouts when I want to make a change to a component of the entry. The content, the presentation, the behavior all live in the same room. I realize this goes against everything I have ever read or have learned about best practices, MCV, or what have you, but it makes so much more sense when I’m working with it in practice.

As the entire site exists as a complete entity with a separate database, I can get to any part of it through nothing more than Finder and TextMate. The workflow of publishing content is condensed into just working with text files, and not having to work with the CMS itself. No adding content to an entry, no adding filenames to custom fields to link CSS or JS, no FTPing said files to the site structure.

As a complete entity, the whole thing can go under version control. Leveraging Git, my workflow has thus been condensed to: design and develop entry. Then publish the changes via Git. I can rest assure that my local copy of the site is the exact same one as the live site.

The templating language, even as simple as it is, allows for enough flexibility to accommodate some creative solutions. Both the article section and portfolio section have their own variety of variables I employ. It’s much like Expression Engine in this regard, where each section has its own content-type and I don’t have to worry about one impeding on the other. That’s something I couldn’t say for my old CMS.

Prior to discovering Stacey, I was considering building my own sort of CMS. Knowing some basic server-side includes, I could do the templating thing, but I faltered when I considered how to handle caching, feed syndication, and comments. Fortunately, Stacey addresses two out of three. And I could live with losing comments.

But that’s not to say that Stacey is the ideal solution for most sites. Even with the all the issues it alleviates, I do have hesitations recommending it as a solution to anyone else.

The cunning simplicity of Stacey which makes it great, also provides for its greatest frustrations. As liberating as it is working primarily through a text editor, I could understand how perplexing it could be to anyone who is well acquainted with a typical CMS. There are no plugins, no templates, no admin section. If you want paginated archives, you’ll have to hack it. If you want to display images 1, 2, 3 and not 3, 2, 1, you’ll have to hack it. Flat out, there’s a lot of functionality that you might expect (comments, pages, sorting content) and Stacey doesn’t have it.

Lucky for me, it’s a great fit.