The SteamPress Blog

This is a write up of the talk I gave at May's Vapor London Meetup. The slides from that presentation can be found here

Vapor 2 has now been released! It contains a load of awesome improvements, including massively simplifying some of the most common use cases, huge performance boosts and loads of great new features. I've had a long running vapor2 branch of both SteamPress and the example site since the first betas and this post highlights some of the keys changes between the two versions and how to migrate your project.

Getting Started

The first thing you need to do is make sure you have the latest version of both Swift and the toolbox. Vapor 2 requires Swift 3.1, so it is time for you to upgrade if you are still clinging to Swift 3.0! It is worth the upgrade even just for the stability improvements in SourceKit and LLDB!

SteamPress has undergone a number of changes recently! We are now at version 0.8.0! The last couple of versions have seen a large number of improvements for Social Media, including Open Graphs and Twitter Cards. This means that an image like below will be displayed when sharing it:

If you take a look at the headers for this page, you will see all the new headers that are set to allow embedded tweets to link to the page:

<meta name="description" content="SteamPress has undergone a number of changes recently! We are now at version 0.8.0! The last couple of versions have seen a large number of improvements for Social Media, including Open Graphs and Twitter Cards. This means that an image like below will be displayed when sharing it:">

New features

Check the release notes of the releases to find all the changes but the overview is:

SteamPress Provider

Comments(!) - This was particularly easy to implement but by far the most satisfying!

Slug URLS - SEO

Better author/tag URLS

Remember Me

Breaking changes

Move to snake_case

Labels are now tags

Some of the Leaf templates will be passed different parameters

Next Up

SteamPress is actually reaching some sort of stability which is nice! Most of the main features that I had planned out have now been rounded out and we are starting to get some test coverage. The next items to looks at are:

Improve the inputs for Tags. Currently tags are entered as space-separated words, so you can't have tags with more than one word, and you also have no idea what other tags you have used!

Welcome to SteamPress! SteamPress started out as an idea - after all, I was porting sites and backends over to Swift and would like to have a blog as well. Being early days for Server-Side Swift, and embracing Vapor, there wasn't anything available to put a blog on my site, so I did what any self-respecting engineer would do - I made one! Besides, what better way to learn a framework than build a blog!

I plan to put some more posts up going into how I actually wrote SteamPress, going into some Vapor basics like Authentication and other popular #help topics on Slack (I probably need to rewrite a lot of it properly first!) either on here or on https://geeks.brokenhands.io, which will be the engineering site for Broken Hands, which is what a lot of future projects I have planned will be under. This however requires DynamoDB integration with Vapor (which the Swift SDK work has been started here) as that is what I use for most of my DB usage (it's cheap, I don't have to manage any DB servers etc and I can tear down/scale web servers and the DB will scale in parallel without me having to do anything). But I digress...

SteamPress is an open source blogging engine, written in Swift for the Vapor framework. The code can be found here and an example site (this one!) to show you how it all fits together can be found here.

If you have any comments/questions/bugs or feature requests, please file an issue on Github!