Since I'm a developer I decided to build my own blog site from scratch. I chalenged myself to keep it super lightweight without compromising on any features I really wanted.
The main stack:
The goal was not to create a full blown online editor for a CMS. I already have convenient tools for writing in Markdown and pushing files to servers. I also like the idea of having my articles in plain text files. Keeping with agile methods I don't need a database for handling massive records when I only need to store articles written by me. Besides, files lend themselves easily to the current trend of serverless deployments, CDNs, source control, free online file backup. Basically there's just already a lot of ways to handle files.
Building in React is so satisfying because so many cool things can be done quickly and reliably. If you navigate between the home page and blog posts on this site you'll see the header is animated. This is possible due to ReactJS updating only the parts of the page that need chaning. Forward and back buttons still work, and any URL can be hit directly from an exernal link.
The meta tags for blog posts need to be dynamic because I wanted everything to come from the Markdown files that contain my posts. So I implemented Next.js to create an isomorphic/universal website. This way I get the best of both worlds. Server side rendered content for SEO, with the benefits of an SPA on the client side.
It's hard to handle SSR without code changes. SSR can be seen as extending the React.js component lifecycle to include the server side render. This naturally introduces complications.
Next.js does a good job of solving these SSR proplems. However, I did have to work around some weird behavior and the documentation is too simple for even the most basic real use case.
There's more to the world of Markdown than I initially realized. Thanks to GitHub for GFM - GitHub Flavored Markdown.