so this is the fifth time I recreate this blog, it started out as a simple blog on Medium then created a whole new blog from scratch using Ghost. I realized that I was paying heavy amounts for something basic so went full JAMStack and used Netlify CMS

and here is the first mistake I have conducted: relying on a very young CMS

what is wrong with Netlify CMS?🤔

it still young and it would take some time to reach to a stable level of maturity like the editor crashes if you add an image inside of the blogpost. (and we are just starting!)

it doesn't comes configured like any typical CMS, nope! 😛you have to configure it and if you need something, you can extend it with Netlify CMS plugins! (if you can understand the documentation then be my guest! and trust me you can't hack around the existing ones because they come baked inside the CMS and you call them inside of the yaml configuration file while the plugins are created in React 15 🤔you heard me right: React 15)

so it is a okish CMS but if you have the ability to change it please do and dump that project in a pit of fire (did two freelance sites with it and surprised by the fact that they are still running without complaining 🤔)

Alright! what is the new stack that you have chosen this time 👀

went with something quite different this time:

  1. Forestry CMS: a git based CMS that gives you Ghost's editor and produce markdown files! (BTW, Ghost's editor is by far the best editor you can lay your hands on 🙌)
  2. Stackbit: handles the entire stack from creation to connecting the apis with every element in the stack (Forestry/Github/Netlify)
  3. Github: store everything in a repository
  4. Netlify: hosts a Gatsby/React powered site, Netlify as a site hoster is great but the CMS sucks

but wait a second! you are an organizer for WordPress Beirut, why not use WordPress?🤷‍♀️

good question! I love WordPress truly and I can do wonders with it from creating my own REST endpoints to using React as WordPress theme but one thing I hate about WordPress is maintaining it.

This is the problem I was facing when I hosted my Ghost blog on DigitalOcean, I was maintaining the server and the blog.

with this stack, everything handles by itself so I don't have to worry about anything at all! (I just went with the stack that needs the least amount of maintenance possible)

Utilize the power of JAMStack ✊

so JAMStack translate to: Javascript - Apis - Markdown Stack

the point of it is that you produce markdown files and Javascript will read them (Gatsby is mostly used for these purposes), the Api part is if you need an external service then you would do api calls (POST/GET requests inside of the static site and that services handle everything for you)

you can even dump the markdown part and depend mostly on apis (something like Contentful) or you can use both (part of the site uses a markdown git based CMS like Forestry and part grabs data from a WordPress site)

purpose of the JAMStack is to move away from the typical fullstack mentality where the frontend and the backend are on the same origin or do a server and logically split it to chunks (one for the frontend and one for the backend). You only care about the site and only the site where everything happens behind the scene without you noticing.

similar to how AWS Lambda functions work, you don't care about the server that it is hosted on nor you don't care about the configurations, you only care about the function running in the way you want it to run and that is it.

but why it took you 5 times? 🤔

let's count them shall we?

  1. Medium
  2. Ghost
  3. Netlify minus a CMS (manual markdown creation and Gatsby to read them)
  4. Netlify + Gatsby + Netlify CMS
  5. Netlify + Gatsby + Stackbit + Forestry

some of the mistakes that I have done

  • code some features that were not used at all.
  • following the hype by using latest technologies (and suffer from the drawbacks they offer)
  • not focusing on the quality of the blogposts.
  • not following a specific coding standard so my code ended up being a pile of spaghetti (from that you start learning about code refactoring and technical debt)
  • jumping to new technologies because they sound cool? just don't......

so what did you learn from those mistakes?

  • if you don't have that much of traffic, having a Ghost or WordPress site is quite useless because you will paying for the server and getting nothing in return. (switch to free tiered services like my current stack where I don't pay a dime then when upscaling depend on a service to handle some parts like Mailchimp for newsletters)
  • ads are great if you have loads of traffic on the site but sometimes people go extreme with ads so don't exceed with them like maximum of two boxes per page not between every paragraph (I don't put ads because I just hate them)
  • I stopped using Google Analytics at phase 3 and the reason behind of it is that it demotivates you when you see that you are getting less traffic than before even though different people are checking the site not the same people every time (I connected Google Analytics with a Slack bot that sends me a message every day with the stats on my own Slack channel). I might set up analytics back in the future.
  • focus on quality than quantity, majority of my audience talk with me right after I post a blogpost saying that they really enjoyed reading it because I have taken the time to write the steps in the most simplified way possible which is great! also posting like 3-5 blogposts per day is quite useless because people will barely check them all but posting 3 blogposts per week and promising better content next week will bring suspense to the blog and make the audience eager for the next blogpost.
  • on a technical note, don't go towards the hype sometimes. At the time when I first started using Netlify CMS, it was considered a big deal back then (like a year ago) go old fashion if you have to but if you love experimenting then go ahead
  • another technical point, expand with developing or using a service if you need it. Don't waste your time on something that you might not need it in the first place.

but what if I am not a developer? 🤷‍♀️

good question! I get asked that from time to time since the majority of my friends are non technical.

The technologies that are showing today are making it possible to have a website for almost for free.

when you search on Google for: "how do I make my own website?", the first thing you see are those generic site builders like Wix (which is banned in Lebanon), Squarespace, and much more

Even WordPress can be turned into a site builder ( get a plugin like Elementor and building a site feels like stacking legos on top of each other)

but incase you are interested, you can create a JAMStack powered site for free where you choose a template, a site generator, and a CMS and it will host it on Netlify for free using Stackbit. If you want to change something, you can always ask a fellow developer (also I can help as well)

and that is all folks

5 times and still, but hopefully I will stick to this stack