Photo: Version 1
Photo by Jon Tyson on Unsplash

A couple of months ago, I set out on a journey to build a personal site from scratch. If you're curious, I wrote about my motivation at the start.

One of my goals was to build and host my site for free (well, mostly free anyway).

I initially wanted to use a hosted service such as Medium or Substack, but I was swayed by listening to many other creators; owning your content is the way to go!

Here are the necessary components, in my opinion, for a developer blog (in 2021):

  • Web domain
  • Fast frontend, e.g., GatsbyJS
    • ๐Ÿš€ JAMstack has become the de-facto choice for content websites
    • โ™บ support for SSG
    • โฌ‡ content rendering with Markdown
    • ๐Ÿ”Ž good out-of-the-box SEO
    • ๐Ÿ’ผ RSS feed generation
    • ๐Ÿ—บ sitemap generation
    • โšก๏ธ Accelerated Mobile Pages support (via plugins)
  • Cloud hosting solution
  • Decent UI
    • โ›ต๏ธ I'm not a designer, so I settled for buying TailwindUI - cost: 250โ‚ฌ (lifetime purchase)
  • CI/CD pipeline
    • ๐Ÿšข I'm hosting my code on GitHub
    • ๐Ÿช and triggering builds using a webhook that sends events to gatsbyjs.com
  • Ability to send newsletters
    • ๐Ÿ“ง I integrated ConvertKit - cost ๐Ÿ†“ for up to 1,000 subscribers
  • Analytics and SEO
  • Content syndication
    • ๐Ÿ”‰ I cross-post to Medium using Zapier - cost: ๐Ÿ†“
    • ๐Ÿ“ฌ I cross-post to Dev.to (using RSS)
  • Social posts
    • ๐Ÿ“ฑ I schedule social posts using Missinglettr - cost: $19.00/month

Total monthly cost: $35.00/month.

It took me a few months of working in my spare time to get here. It's not perfect, but it's a good start that enables me to write and publish content that I own 100%.

My initial plan was to write about Software Engineering. However, I started having fun while learning GatsbyJS, GraphQL, and refreshing my Javascript/React skills.

So I took a slight detour and wrote about building my site, building in public.

While I like what I achieved with Gatsby, I found myself fighting it while trying to achieve various outcomes. Also, some of the promises it makes are downright false; one such example is support for โšก๏ธ AMP. This should be achievable through a third-party plugin, but in my experience, that plugin is challenging to work with.


This leads me to my "next" adventure (pun intended) - the second version of my site!

I have been looking with great interest at NextJS 11. Friends tell me it's "the way" to do React nowadays. It has all of Gatsby's capabilities and more. But most importantly - it relies much more on vanilla JS/TS instead of custom (and mostly unmaintained) GatsbyJS plugins.

I don't know when I'll have time to start this project; I expect it won't be any time soon.

For now, my current stack works and allows me to focus on what really matters - my content. But I can't shake the feeling that my code is getting messier by the day...

If you enjoyed this post, please share it with your friends!