If you’ve ever worked with WordPress or any traditional CMS, you probably noticed that both the frontend and backend are tightly connected.
That’s great for simple setups — until you want full control over how your frontend looks and behaves. Then it becomes a pain because you have to work around WordPress themes, plugins, and templating systems.
That’s where a headless CMS comes in.
Headless means we’ve removed the “head” — the frontend — and kept just the backend (the content management part). We still have the backend part of the CMS i.e the admin panel where we can add content so we can easily create things like blogs, articles, or some other content but it’s entirely up to you as a developer how you'll consume that content and what type of frontend that’s going to display your content.
Now, Strapi takes care of the backend content management, then provides you with an API that you can use to grab that content from our own custom frontend, and it doesn’t matter how you make that frontend as it could be built using HTML,CSS, and Vanilla JS, React, Swelt, or Vue.
Your React app will communicate with Strapi to fetch and render content dynamically. Strapi exposes RESTful API endpoints by default look like the below:
You can build your frontend with React, Vue, Svelte, or even just plain HTML, CSS, and JavaScript — It doesn't matter. Strapi will simply expose your content through APIs that you can easily fetch and render however you want.
Example:
/blogs → Fetch all blog posts
/blogs/:id → Fetch a single blog post by ID
You’re not going to use axios or the fetch API to make requests for the data in the endpoints above, Strapi works really well with GraphQL and that’s primarily how we’re going to be fetching data in these series.
Prerequisites
Before you begin, you will need:
- Basic understanding of React and React Hooks.
- Understanding of GraphQL.
- Nodejs (LTS and not Current Versions) Installed on your system.
Part A: Creating a New Project Using Strapi
Yay, you’ve made it to step 1, Have a fabulous time building your project.
Step 1: Create Your Project Folder and Run the Installation Script
1️⃣ Create a Project Folder
Run the following command on your terminal:
mkdir maga-reviews && cd maga-reviews
This creates a new project directory called maga-reviews and navigates into it.
2️⃣ Create a Strapi Cloud Account
- Run the following command on your terminal:
npx create-strapi@latest backend
3️⃣ Follow the Installation Prompts
Strapi will guide you through a short setup process.
First, install the required packages:
Need to install the following packages:
create-strapi-app@5.29.0
Ok to proceed? (y)
After confirming with “y”, continue to step 4
4️⃣. Authentication Step
During setup, the terminal will prompt you to log in or sign up to connect your project with Strapi Cloud. Ensure Login/Sign up is selected in the terminal, or use arrow keys to select it, and press Enter.
If a browser tab doesn’t open automatically, follow the on-screen instructions — usually, you’ll be asked to open a URL and enter a short activation code like:
Open: https://auth.cloud.strapi.io/activate?user_code=PXQM-MGCJ
Enter code: PXQM-MGCJ
In the new browser tab that opens, ensure the confirmation code is the same as in the terminal and click Confirm.
While still in your browser tab, click
“Continue with GitHub.”
If you’re not already signed in to GitHub in your current browser session, you’ll be redirected to the GitHub login page to authenticate your account.
Once authentication is successful and you’re logged in, the browser will display a “Congratulations, you’re all set!” message.
Once you do, a 30-day trial of the Growth plan will be automatically applied to your project.
You can then safely close the browser tab and return to your terminal.
5️⃣ Accepting Default Configuration Options in the Terminal:
The terminal will now ask you a few questions. Press Enter to accept the default answer to all questions.

6️⃣ After Strapi finish installing dependencies, your Strapi backend is ready to run.
Step 2: Register Your First Local Administrator User
Enter into your backend folder, and launch Strapi local dev server
cd backend && npm run develop
The first thing you need to do now is to create a new admin user, and once you are done creating the form, you’ll have created the first admin user of this Strapi application. Praise Jesus!!

Rejoice! You just created a new project with Strapi.
Part B: Build your content structure with the Content-type Builder
A content-type is a blue print for a type of content. It describes what fields the content should have and what data types they should be. A blog content type might have a title, body and an author field. All of which could be text fields
The installation script has created an empty project. You will now create a gamings directory.
The admin panel of a local Strapi project runs at http://localhost:1337/admin. This is where you will spend most of your time creating and updating content.
First we will build a collection type. This can only be done while in development mode, which is the default mode for projects that are created locally.
Step 1: Create a "Review" collection type
Your games directory will eventually include many game reviews, so we need to create a "Review" collection type. Then we can describe the fields to display when adding a new game entry:
- Click on the Create your first Content type button. If it's not showing up, go to Content-Type Builder in the main navigation.
- Click on Create new collection type.
- Enter
reviewfor the Display name, and click Continue. - Click Add new field, then click the Text field.
- Enter
titlefor the Name field. - Switch to the Advanced Settings tab, and check the Required field and the Unique field settings.
- Click on Add another field, then Choose the Number field in the list.
- Enter
ratingfor the Name field and Chooseintegernumber format. - Switch to the Advanced Settings tab, then check the Required field and Choose a Minimum Value of 1 and Maximum value of 10.
- Click on Add another field and Choose Rich text (Blocks) from the list.
- Enter
bodyfor the Name field. - Switch to the Advanced Settings tab, and check the Required field, then click Finish
- Finally, click Save and wait for Strapi to restart.
Once Strapi has restarted, "review" is listed under Content Manager > Collection types in the navigation. Wow, you have just created your very first content-type! — let's create a review.
Step 2: Create a "Review"
You’ve successfully created the review collection type, get excited because it’s time to add your first game review entry.
> Review > Create new entry >
- Click on content maager, then click review in the left-hand navigation. If it's not showing up, go to Collection types/review in the main navigation.
- Click on Create new entry.
- In the title field, type
Mario Golf. - In the body field, add a random Lorem ipsum paragraph.
- Enter a rating of
9. - Click Save, then click Publish to make the review live.
- Repeat the process to create 5 more game review entries.
Congratulations! 🎉 You’ve just created your very first set of game reviews. Hallelujah — your Strapi journey is well underway!
Step 3: Make Some API endpoints Public
In order to unprotect your content created by Strapi,
Path: ⚙️ Users & Permissions plugin > Roles > Public
On the Public interface, the Review content type is displayed in the list of available content types.
Scroll down to the Review section and Click the dropdown icon to expand it, enable the find and findone, then click **Save.
Part C: Test API endpoints with Postman
You can download postman at postman.com.
-
Testing All Reviews Endpoint.
- On Postman Click New, then Click on HTTP.
- Enter http://localhost:1337/reviews for the request URL, and Click Save.
- Enter
all reviewsfor your request name. - Click New Collection , and Enter
Strapifor your collection name. - Click Create, then click Save, then ****Click Send and Postman displays the response data sent from the server in the lower pane.
-
Tesing a Single Review.
- Enter http://localhost:1337/reviews/1 for the request URL, and Click Save.
- Enter
single reviewfor the request name. - Add it into the
Strapicollection, and Click Save. - Click send, and Postman displays the response data sent.
-
Testing Delete Review.
You have to create an authenticated user in order to have permissions to perform actions like delete.- Give Authenticated Users Permission Path: ⚙️Users & Permissions plugin > Roles > Authenticated Open Authenticated, Select all Permissions under REVIEW, then click Save.
-
Create new User
Path: Content Manager > User > Create new entry- Go to the User collection type in the Content Manager.
- Click on the Create new entry button in the top right corner.
- Fill in the default fields of the entry. Additional fields added specifically for your Strapi application by your administrators may be displayed as well.
Field Instructions Username Write the username of the end user. Email Write the complete email address of the end user in the textbox. Password Write a new password in the textbox. You can click on the 👁️icon for the password to be shown. Confirmed Click ON for the end-user account to be confirmed. Role Set the role of the User to Authenticated. -
Log in with your user using Postman as your frontend.
- Select Post request from the drop-down menu on Postman
- Enter http://localhost:1337/auth/local for the request URL.
- Click Save, then enter
loginfor the request name. - Click body, then Select raw, then select JSON. enter in the below the username and password that you used for creating a user:
{
”identifier”: “username”
”password”: “PASSWORD”
}- Click Send and Postman displays the response data sent from the server in the lower pane which will include your jwt and user information.
- Copy your JWT token, select the delete request from the drop down.
- Enter http://localhost:1337/reviews/2 for your request URL.
- Click Save, then enter
delete reviewfor the request name. - Add it to the
Strapicollection. - Click on authorization, and choose bearer token from the drop-down menu, then Enter your JWT into the token space.
- Select Delete request from the drop-down menu on Postman.
In Conclusion,
Have a nice time using your API to build fun game apps.

Top comments (0)