• development

How to start developing your own blog website without getting overwhelmed

July 25, 2022 · 5 min read
post cover

Table of Contents

    Hello! Hola! Welcome to my first post 👋😄  As this is my very first post on the internet, I’m going to introduce myself a little before getting into today’s topic.

    My name is Jordi, born and raised in Valencia (Spain). I’ve been doing Software Engineering for more than 3 years now, focusing on the front-end part.

    In this post, I'll give you some guidelines about how to start developing your blog website and why you should do it.

    ℹ️This post’s guidelines are front-end oriented, but I think they can be interesting even if it is not your area of work.

    Why you should code your own blog

    So you want to start blogging, huh? Well, then you should be aware that there are a lot of people out there doing the same thing, but in my opinion, not everyone knows how to differentiate themselves or stand out from the rest.

    Most of the blogs out there are hosted on a common platform like Medium, dev.to, Quora; they look all the same. Sometimes it might be boring for some visitors.

    If you know how to code, then you already have an advantage over the rest, because you can make your website look as you want, and add a lot of different custom functionalities.

    Have I convinced you? Well, I hope so. In that case, I’ll give you more guidelines down below.

    Content source

    If you want to write down your own articles and then push them to your self-developed website, you’ll have to make a call regarding the content source, even though you can always switch to a different option, it’s better to save some time and make a good decision beforehand.

    There are many many options out there, but I’ll talk to you about the ones I know and I think are the most popular ones.

    👉This should be your first step before starting the development process, as this decision may change the whole project architecture.

    Local content vs API-based content

    So, if you just decided to make your own custom blog website as I did, the first decision here might be if you either prefer a local content-based solution or an API-based content solution.

    When we talk about local content we talk about content that is uploaded to the repo of your project. That means every time we want to upload a post we have to commit and push the changes, so the blog is re-generated at build time. Some popular solutions are Markdown and MDX.

    On the other hand, there’s API-based content, so the content is retrieved at the request time (each time we visit the website). This type of content source is also widely used by some big companies as it makes it easier to manage the content through a CMS (most of the time a headless CMS).

    For an API-based solution, you can either upload your content at your own back-end, like a Strapi server (headless CMS) or on an API-content platform like Contentful or Sanity.

    Depending on your needs you might choose either the first or the second solution. If you want to make it simple, fast to develop, and functional, maybe the local content option is the one you are looking for. On the other hand, if you want a more scalable solution, that doesn't require commits to make changes and that works better working with teams, the API-based solution is for you.

    👉If you go with the API-based content solution, you might need at some point a paid subscription if you want to have more functionalities, so take that in mind.

    My choice

    For my website, I decided to go with the Notion API to store and retrieve the content. It fulfills my needs and It’s so amazing that I can upload any post at any time right from my phone. For me it’s completely worth.

    💡If you don’t know what Notion is, you can check it out here.

    I’ll be publishing an article about how I coded my website with Notion API and Next.js very soon. Follow me on Twitter to stay tuned.

    Architecture

    Now that we decided where to store our articles, It’s time to think about the architecture. For me, this part of the development process it’s always important.

    If you went for the local content solution, I highly recommend you to use an SSG (Static Site Generation) compatible framework, like Next.js for React, or Nuxt.js for Vue. I’ve already used both previously and both are pretty good options. You’ll need a parser to parse your Markdown or MDX files, so take your time to code it, as it is the most important part of your code. Good thing is that you can find tons of examples on the internet, and then modify it as you want. I’ll explain in my upcoming post how I’ve done it.

    You can use those frameworks mentioned above for the API-based solution as well. I recommend you to change the approach to either ISG (Incremental Static Regeneration) approach or the SSR (Server Side Rendering) approach. In this case, parser code will completely rely on how your API serves the content, so you have to be careful when choosing the correct platform.

    💡If you’re not familiar with the SSG, SPA, and SSR concepts, you can learn about how they work in this post.

    Deployment & CI/CD

    We’re almost there, just one last step, the hosting of your website.

    These days there are plenty of different hostings offering a pretty good value with their free plan. If you’ve coded your site with Next.js, you should stick to their ecosystem using Vercel. On the other hand, If you choose Nuxt.js you can use Vercel as well or Netlify for instance. You can check all the options here.

    All the deployments mentioned above offer a premium plan, so you can scale your website with no effort. CI/CD it’s included on their free plans, so when you push articles to your repo they get published automatically.

    Thank you!

    I hope this article has been helpful. Remember to stay tuned to my Twitter for when I upload the post where I will explain how I coded my site and also give you extra tips. Thanks for reading and see you on the next one!

    Was it good? Found any typing error?

    Send me a message on Twitter @jordicasesnoves for letting me know.