Last weekend, I took some time to fully rebuild my personal blog from “scratch”.
My original site (and the many incarnations of it before that) was a static site built around blog posts written in Markdown or reStructuredText. I would use different themes from HTML5 UP and manually split out the files into templates, work with verbose stylesheets that someone else wrote, and would generally sink more time into maintaining my site than actually writing blog posts. Lektor was great but I needed something more streamlined, and wanted something that was going to give me a more modern web experience out of the box.
Markdown support for blog posts
Tags/Categories for blog posts
Optimized image loading
I found a Gatsby starter by Ruben Harutyunyan that gave me an awesome starting place for almost everything I was looking for. I was especially happy to find a starter that was so fully featured, but had very minimal pages and no styling or CSS frameworks included. It also uses GraphQL under the hood to retrieve blog post data, which is makes interacting with post data really clean.
I had to handle a couple of formatting differences from my previous Markdown files for my blog posts, but those were basically able to be dropped into the new site. I'm a huge fan of Rebass and used all stock components for the UI.
I was super impressed with the myriad of plugins/libraries available for Gastby. Things like offline support, uploading files to AWS, optimized image loading, and RSS feeds all have plugins that sometimes complex tasks essentially plug-and-play.
The only major issue that I encountered was that I needed to customize the blog post URL in order to make sure links from my previous blog were supported. Diving into how the blog slugs were determined and used took a little more time than I would have liked, but was still fairly low-effort.
The repo for my original Lektor site as well as my new site are on GitHub:
GatsbyJS/GraphQL/Rebass repo: GitHub - emilyemorehouse/emilyemorehouse.com: Personal website, built using Gatsby, Rebass, and GraphQL