Build a website with Gatsby and Strapi - Introduction
Tags: gatsby, react, webdev, strapi
Published: 2020-05-08 22:18:25

Imagine that you want to build a powerful and fast website. A website for your company for example, including a blog. What would you use ? Wordpress ? Laravel ? Drupal ?

Well, those are pretty good choices.

If we look at this chart of the most used CMS on the web (according to Wappalyzer), Wordpress is clearly the most used CMS

![most used CMS](https://res.cloudinary.com/tsflorus/image/upload/v1588976046/most_used_CMS_73ffa79128.png)

And if we take a look at the most used web frameworks, we have a lot of things we can play with.

![most used Web Framework](https://res.cloudinary.com/tsflorus/image/upload/v1588976046/most_used_Web_Framework_cb96a270ea.png)

### But what if we think different ?

I mean, the last time someone has done that, he created an apple that worth 1.3 trillion.

Well, in this tutorial we will learn to think different.

## Another way of managing data

If you take a look at the CMS charts, we see Wordpress and Drupal. And what does they have in common ?

They both managing content of a front-end. For now, nothing new they are just random CMS.

The fact is that Wordpress and Drupal both have a Front and a Back-end.

The keywords for our project will be flexibility and power.

### Here comes Headless CMS

A headless CMS is a CMS without presentational layer. This is just a backend.

I will not explain you in details what are headless CMS because it exist a lot of great article about it. [You can check this one if you want](https://medium.com/tribalscale/headless-vs-traditional-cms-which-is-better-3388bd6311b1). 

Headless CMS are perfect for front-end developers because they allow a lot more flexibility on designing the UI.

I am not a front-end developer but when I was building [my website](https://tsflorus.me) I wanted something simple and powerful.

The data we will be building (articles and pages) will be accessible via an API. We will just have to fetched this data using API query with GraphQL.

### Which CMS should we use ?

There are a lot of Headless CMS, Netlify, Ghost, Contentful etc. But the CMS we will be using is called [Strapi](https://strapi.io). Strapi is a new powerful headless CMS build in France.

> [You can check my article on my discovery of Gatsby and Strapi here](https://tsflorus.me/blog/discovery-gatsby-reactjs)

I've choose Strapi because it is new and very easy to use.

Right, Now we have our headless CMS. But what is a website with just a backend ?

We now need a way to build our front-end. And for that, it exist something called **static site generator.** Did you already heard about them ?

Let's take a quick look to wappalyzer charts for most used Static site generator  :

![most used satin site generator](https://res.cloudinary.com/tsflorus/image/upload/v1588976046/most_used_satin_site_generator_049876bdb3.png)

Take a look at the first result. It is called **[Gatsby](https://gatsby.org)** and this is what we will use for this website.

I invite you to check the website of Gatsby to learn about this very powerful tool.

Gatsby is based on Javascript and more specifically it is a Reactjs based framework.

This is perfect for us, Reactjs will allow us to build a powerful web app (PWA → Progressive Web App). React js is also perfect for UX design. Again, I will not write a lot about react and I encouraged you to check others blog posts about react.

React also allows us to implement logic in the same file than the UI.

Now we know that we will use **Gatsby** and **Strapi**.

### Deployment and production

When we will have build our website we will need to deploy it in order to be accessible on the web.

To do that, we will see how to deploy our CMS on heroku and our website on Vercel (Formerly ZEIT) using Now servers.

For this serie of tutorials, I will upload at least an article a week. We will see everything we need to get started with a simple website. Along with these articles, I will upload videos as soon as possible to complete it and to have a perfect look on this project.

Tutorials will be available on my [website](https://tsflorus.me) (mainlly) and on this account.

See you very soon and keep coding !

Thomas