Table of Contents
Creating a blog has been on my list of projects for the longest time, but I kept putting it off.
I have been recommended by friends to use the big names such as WordPress, Squarespace, Tumblr, etc... to start blogging but as a programmer I knew that this was a chance to over-engineer & make yet another blog system.
To overcomplicate the assignment even further, I made a set of requirements that would need to be fulfilled:
- Expandable - Ability to add new features as I see fit, perhaps one day I might want to add the ability to export tutorials as PDFs
- Customization - Ability to change the style whenever I saw fit with relative ease
- Code Support - Ability to support code displaying on the page & run custom code if needs be (visualizations too)
- Simple - Easy to maintain, add to without much hassle
- Control - Able to switch providers if needs be, & change what I want when I want
- File support - Ability to upload files to be used by the user
- Future-proof - Choose a platform of coding stack that allows me to keep this up for a while (even without regular maintenance)
- Modular - Ability to add this blog to a bigger website for future projects (personal page for instance)
- SEO - Ability to adapt to new SEO practises as they come up
After making the list, I looked at the available options for a blog. There were two main categories, providers & self-hosted blogs. Using any of the main providers would come at a cost but would be the easiest solution to starting a blog. I decided against it, as I felt that no provider fully fulfilled my requirements.
Thus, I went to look at coding a blog. Starting the project, I thought about starting it from scratch, experimenting with GoLang & its templating engine. After spending a decent amount of time fooling around, I decided that it would not be worthwhile for me to code it in Go & from scratch. As a programmer there is pride in developing something from the ground up, & I have created many projects by myself without a tutorial or base project. This would not be one of those times. I chose against it as I have a lot of projects going on already, & creating a blog would take up a considerable amount of time just to satisfy my engineering ego. To add to this, I was against the idea of simply copying a project & calling it done.
Looking at tutorials, I found that many were very basic, or some were too complex for my needs, either not allowing for many capabilities or on the hand, being functionally sufficient but not very cleanly coded or aesthetically unappealing. After a while, I discovered the Tailwind Blog & as a nice surprise, it was open source.
The Tailwind Blog uses a modern stack consisting of NextJS, ReactJS, & TailwindCSS. You may notice that there isn't a database in the stack. This was a conscious choice as I found many of the blog projects with database added unnecessary complexity, adding more steps to the development process. Furthermore, not having a database allowed me to export my project as static pages which makes hosting cheaper, and as an added bonus makes page loading faster (maybe a negligible speed difference)
This would be a perfect base for my blog. I did not want to simply download the code & host it, so I opted to manually create a new project & write all the code in my project referencing the project heavily. Using this method, I understood all the code that went in the project, & I made changes along the way to fit my needs.
The original project can be found here: Tailwind NextJS Starter Blog.
Currently, I am playing around with some ideas. As of right now, I wish to work on other projects & write posts every now & them when I feel that I am in the mood. This will be a free flowing blog where I write posts when I feel that I have something to share with the people on the internet.
Presently, I am working on a lot of projects & studying for my second Diploma, so development will be fairly slow until I have some spare time. That being said, I want to give this blog the attention & love it needs, so I will be noting features as I think them up & will plan to add them when I have a free moment. I will also try to spend time on improving this blog over time as I feel that the more tools I have on the blog, the better I will be able to express myself.
I hope you enjoy this blog :)