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).
Here are the necessary components, in my opinion, for a developer blog (in 2021):
- Web domain
- 🕸 in my case, MihaiBojin.com - cost: ~$12/year
- Fast frontend, e.g., GatsbyJS
- 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
- 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%.
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...