As the weeks progress through the Capstone quarter, I’ve started to think about blogging in a post-graduate sense. Short of creating a full-blown custom solution, there are many off-the-shelf options available such as WordPress, LiveJournal, and Tumblr. I recently became aware of Static Site Generators such as Jekyll, Next.js, Hugo, and Gatsby, which are somewhere in the middle of these two camps and leverage templating languages as part of the “glue” holding everything together.
Along with these solutions are hosting providers such as GitHub Pages and Cloudflare, which provide hosting for free/at minimal cost, offering clever integrations to kick off builds and publish content when a new commit is pushed to the main branch. These solutions seemed to provide the right balance of flexibility and management overhead as they can be completely serverless solutions if desired, which also comes with inherent benefits to security and scalability. I’ve learned many developers on GitHub take advantage of this offering to showcase their portfolios.
By generating static assets from a series of templates, metadata, and content material, you eliminate the need for a dedicated backend in most cases. There are no databases to manage, and when publishing to a hosting provider there are no frontend servers to manage either. Your pre-generated pages are all neatly bundled and shipped off to a server, or collection of servers in the case of CDNs like GitHub Pages and Cloudflare, for blazing-fast load times!
I’ve been tinkering around with this for the past week and have started to get a personal blog put together. Landing on Cloudflare Pages for content hosting and Jekyll for the static content generation, I’m able to make updates and add new content fairly easily by pushing my changes to the main branch after verifying locally. I can see how this approach could work well for a collaborative blog, as anyone with access to the repository could add new pages or posts to the site by pushing commits via Git for publishing.
Local development is easy too, with a couple of YAML configurations you can specify overrides for easier debugging. Any changes on disk also cause Jekyll to rebuild immediately, so you can quickly iterate on design and content. I’m using a spare Linux machine for my development environment which I connect to via Visual Studio Code over SSH.
If you’re looking for a lightweight blogging solution that can grow with you long-term, I recommend you check out some of the static site generators on jamstack.org.