I decided to start a blog at the start of 2023, and I wanted to be able to personalize it to my liking, so I decided that I don't want to use an existing blogging platform, but build one from scratch. I have good experience in programming and web development, so I opted in for the challenge. I wanted to make it functional, yet not waste too much time on building.
I spent about 2 weeks analyzing tools and technologies that can help me build the site quickly. I ended up choosing NextJS for the core and Payload CMS for the content management platform. I had no experience in either of them but I wanted to give them a try and decide if I want to stick with them. This was one of my first mistakes - I was not aware of their full capabilities. I made the connections between Next and the CMS and kept on developing.
Down the road, I realized that the Payload CMS was not the thing I was looking for, so I went back to the drawing board and spent more time researching. After some detailed analysis, I picked Strapi CMS. Strapi offers a lot of customizability and fits perfectly for my needs. There was a self-hosted free option or a cloud-based paid one. Since this was only a work in progress, I decided to try the free version first.
From the beginning, I had in mind the need for a server that could host multiple applications at once. The simplest and cheapest option was to use a Linux container that would host all applications. This meant that I would need a load balancer like NGINX that will handle the connections and will redirect the requests to the correct application.
When I bought the domain, I also bought a certificate to use the site over HTTPS. However, during the deployment phase, I found a tool called certbot that generates certificates for free with just a one-time configuration. It did the job so well that I never used the certificate I purchased.
I am working full-time as a software engineer and helping was always one of my favorite things about my job. I remember the hard times I had while learning how to code, all of the hurdles and the coutless times of a senior helping me get over them, so I made a promise to myself that I will become the senior developer I needed when I was a junior. I am always trying to help others and seeing people improving and being thankful for the help, makes me very happy and fills me with very possitive energy.
Exactly this passion to help people gave me the motivation to start blogging. I wanted to share my experience and write useful and helpful content for everyone.
Before starting a big project, make sure that you have planned the time that will be needed. My initial goal was to publish the blog within 3-4 months. In reality I bearly released it an year after the initial start. The time that I spent developing I could've spent writing. This is something that you definetely should have in consideration.
The choice of a tech stack is also very important because you will be stuck with all of the tools that you've picked previously. Make sure that you have picked the right tools for your application. Preferably use something that you are familiar with, otherwise you will compromize some of the quality.
Having your own infrastrucutre is nice, but do you actually need it? Using a third-party blog software might save you a lot of time and not necessarly make your website less customizable. There are a lot of great themes and page builders that can make your website unique. Make sure you know what you are dealing with before you decide to create your own solution.
No, I am really glad that I made my website with tools and technologies that are modern and developer-friendly. This allows the website to scale easier at a later stage when new features and functionalities will be implemented. This whole project gave me a good experience, I learned a lot of things and I have the NextJS framework and the Strapi CMS in my arsenal of web development tools.
I hope this article makes it easier for you to choose the right approach for your blog. Whether you choose an existing platform or decide to create one from scratch, the content that you put in is what matters the most.