<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Blessing Krofegha</title>
    <description>The latest articles on DEV Community by Blessing Krofegha (@krofax).</description>
    <link>https://dev.to/krofax</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F318466%2Ff543aee9-0e6e-4182-99f2-0d047b123b24.jpeg</url>
      <title>DEV Community: Blessing Krofegha</title>
      <link>https://dev.to/krofax</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krofax"/>
    <language>en</language>
    <item>
      <title>Deployment made easy with Agility CMS and Vercel</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Fri, 21 Jan 2022 02:38:03 +0000</pubDate>
      <link>https://dev.to/krofax/deployment-made-easy-with-agility-cms-and-vercel-1bpp</link>
      <guid>https://dev.to/krofax/deployment-made-easy-with-agility-cms-and-vercel-1bpp</guid>
      <description>&lt;p&gt;Deployment made easy with Agility CMS and Vercel&lt;br&gt;
Deployment is an important phase in every project, with vercel intuitive deployment features, this process is simpler.&lt;br&gt;
Vercel's new Integrations Marketplace makes it much easier for Vercel users to discover, install, and configure integrations. It simplifies how developers integrate with the Vercel platform to enable the best developer and end-user experience, it enables you to extend and automate your workflow by integrating with your favorite tools, such as Agility CMS!&lt;/p&gt;

&lt;p&gt;Agility CMS integration with Vercel will set the environment variables that allow you to connect to your data from Agility CMS in your Vercel applications. In addition, it will also configure your Agility CMS instance with a preview and production domain, which enables direct links for your editing team, in the shortest possible time.&lt;/p&gt;

&lt;p&gt;In this article, I'll walk you through the process of integrating Vercel with Agility CMS. Vercel allows for automatic deployments on every branch push and merges onto the Production Branch of your GitHub, GitLab, and Bitbucket projects&lt;br&gt;
For this walkthrough, we’ll be using the &lt;a href="https://nextjs.org/"&gt;Next.js&lt;/a&gt; starter website connected with the Agility CMS instance.&lt;br&gt;
This article assumes that you already have an account with Agility CMS and Vercel, and as such will not be treating that in this article.&lt;/p&gt;

&lt;p&gt;Let’s get started!&lt;/p&gt;

&lt;p&gt;Deploy from the Content Manager&lt;/p&gt;

&lt;p&gt;You can deploy our template starters using the Vercel integration built-in to the Agility CMS Manager.&lt;br&gt;
To make the process less daunting, we’ll break the process into steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Deployment Settings
&lt;/h3&gt;

&lt;p&gt;Start by heading into &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Sitemaps&lt;/strong&gt;, then clicking &lt;strong&gt;Setup Deployment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UhCvZ5ew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.aglty.io/agility-cms-docs/block-editor/developerarticles/Screen-Shot-2021-03-11-at-12.57.25-PM-09292021142839-11112021185354.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UhCvZ5ew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.aglty.io/agility-cms-docs/block-editor/developerarticles/Screen-Shot-2021-03-11-at-12.57.25-PM-09292021142839-11112021185354.png" alt="Image" width="880" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Select a Deployment Provider
&lt;/h3&gt;

&lt;p&gt;Select Vercel as your deployment provider, ensure you click on the Automated Deployment option to connect to Vercel and deploy your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jCUsFKcN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730167896_Screen%2BShot%2B2022-01-21%2Bat%2B2.55.42%2BAM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jCUsFKcN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730167896_Screen%2BShot%2B2022-01-21%2Bat%2B2.55.42%2BAM.png" alt="Image" width="880" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Create Git Repository
&lt;/h3&gt;

&lt;p&gt;First, connect to your preferred Git provider, after that create a Git Repository for your project or app to ensure you can easily update your project after deploying it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v5DL3e6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730439545_Screen%2BShot%2B2022-01-21%2Bat%2B3.00.25%2BAM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v5DL3e6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730439545_Screen%2BShot%2B2022-01-21%2Bat%2B3.00.25%2BAM.png" alt="Image" width="880" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Add Agility CMS Integration
&lt;/h3&gt;

&lt;p&gt;Next, Install the Agility CMS integration that will authorize access between Vercel and your Agility CMS content so that we can automatically configure your Production and Preview domains, as well as set up your Environment Variables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BnnRFc-g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730565718_Screen%2BShot%2B2022-01-21%2Bat%2B3.02.28%2BAM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BnnRFc-g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730565718_Screen%2BShot%2B2022-01-21%2Bat%2B3.02.28%2BAM.png" alt="Image" width="880" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Deploy
&lt;/h3&gt;

&lt;p&gt;Lastly, Vercel will fetch the source code for the template starters and it will be cloned into your Git repository. Vercel will also build your project and upload/deploy your build output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FZsUAwm1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.aglty.io/agility-cms-docs/block-editor/developerarticles/Screen-Shot-2021-07-13-at-12.51.49-PM-09292021143030-11112021185937.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FZsUAwm1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.aglty.io/agility-cms-docs/block-editor/developerarticles/Screen-Shot-2021-07-13-at-12.51.49-PM-09292021143030-11112021185937.png" alt="Image" width="880" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once deployed you will be taken back to your Agility CMS Manager, and you will see that your Production and Preview domains have been set. You can click on the link to view your live site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bbiLhrsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730893769_Screen%2BShot%2B2022-01-21%2Bat%2B3.07.59%2BAM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bbiLhrsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropbox.com/s_F39CC2E1FD74F0DE56F9D96CD4987B0AA3F1DD1408E536EF485F72B5B69B0B03_1642730893769_Screen%2BShot%2B2022-01-21%2Bat%2B3.07.59%2BAM.png" alt="Image" width="880" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the webpage is successfully deployed, you would be able to preview the website. Check out the &lt;a href="https://vercel.com/docs"&gt;Vercel documentation&lt;/a&gt; to explore various channels of deployment that can make your deployment process effortless and enjoyable! &lt;/p&gt;

&lt;p&gt;Try Agility CMS and Vercel&lt;/p&gt;

&lt;p&gt;Vercel offers a profound process of deploying static sites in any frontend framework. As a result of the Vercel Marketplace partnership, Agility CMS can deliver a dynamic deployment experience to developers, one that makes development to deployment a plug and plays experience, hence improving your digital experience&lt;br&gt;
In addition, we offer a free trial of our headless CMS in the case that you are skeptical about how Agility CMS and Vercel work in tandem.&lt;/p&gt;

&lt;p&gt;If you’re looking into using any other integration tools like Zapier, feel free to check out this &lt;a href="https://dev.to/krofax/integrating-headless-cms-with-zapier-1ia3"&gt;guide&lt;/a&gt;.&lt;br&gt;
Also, if you want to integrate Agility CMS with GraphQl, this &lt;a href="https://dev.to/krofax/using-graphql-with-agilitycms-d8g"&gt;article&lt;/a&gt; will help guide you through it.&lt;/p&gt;

&lt;p&gt;When you are ready, and if you are interested, you can sign up easily and quickly for both a &lt;a href="https://agilitycms.com/free"&gt;free Agility CMS&lt;/a&gt; account and a &lt;a href="https://vercel.com/signup"&gt;free Vercel account&lt;/a&gt;. Our free tier also comes with the Next.js boilerplate to enable quick deployment of your media content.&lt;/p&gt;

&lt;p&gt;Curious to know what the top headless CMS is for 2022? check out this &lt;a href="https://dev.to/krofax/top-10-jamstack-cms-for-2020-19dd"&gt;list&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Using GraphQL with AgilityCMS</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Wed, 21 Jul 2021 05:23:21 +0000</pubDate>
      <link>https://dev.to/krofax/using-graphql-with-agilitycms-d8g</link>
      <guid>https://dev.to/krofax/using-graphql-with-agilitycms-d8g</guid>
      <description>&lt;p&gt;According to  &lt;a href="https://2019.stateofjs.com/data-layer/graphql/"&gt;State of JavaScript 2019&lt;/a&gt;, 38.7% of developers would like to use GraphQL, while 50.8% of developers would like to learn GraphQL.&lt;br&gt;
Being a query language, GraphQL simplifies the workflow of building a client application. It removes the complexity of managing API endpoints in client-side apps because it exposes a single HTTP endpoint to fetch the required data. Hence, it  &lt;a href="https://hub.packtpub.com/7-reasons-to-choose-graphql-apis-over-rest-for-building-your-apis/"&gt;eliminates over-fetching and under-fetching of data&lt;/a&gt; , as in the case of REST.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;em&gt;This tutorial will benefit those who have worked with RESTful or other forms of APIs in the past on the client-side and want to see whether GraphQL is worth taking a shot at. This means you should have worked with an API before; only then will you be able to understand how beneficial GraphQL could be to you. While we will be covering a few basics of GraphQL, a good knowledge of headless CMSworks will come in handy&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  GraphQL Basics
&lt;/h2&gt;

&lt;p&gt;This article isn't a complete introduction to GraphQL, but we will define a few conventions before continuing.&lt;/p&gt;

&lt;h2&gt;
  
  
  WHAT IS GRAPHQL?
&lt;/h2&gt;

&lt;p&gt;GraphQL is a  &lt;a href="http://spec.graphql.org/June2018/"&gt;specification&lt;/a&gt;  that describes a declarative query language that your clients can use to ask an API for the exact data they want. This is achieved by creating a strong type schema for your API, with ultimate flexibility. It also ensures that the API resolves data and that client queries are validated against a schema. This definition means that GraphQL contains some specifications that make it a declarative query language, with an API that is statically typed (built around Typescript) and making it possible for the client to leverage those type systems to ask the API for the exact data it wants.&lt;br&gt;
So, if we created some types with some fields in them, then, from the client-side, we could say, "Give us this data with these exact fields". Then the API will respond with that exact shape, just as if we were using a type system in a strongly typed language. You can learn more in my Typescript article.&lt;br&gt;
GraphQL is a query language for your API, not for the database. It is database agnostic. It can be used with any database. GraphQL allows clients to query data from multiple sources in the API at one request and it allows clients to define which part of the data the client needed. Whilst providing you with such flexibility.&lt;br&gt;
Let's look at some conventions of GraphQl that will help us as we continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  THE BASICS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Operations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In GraphQL, every action performed is called an operation. There are a few operations, namely:&lt;br&gt;
Query&lt;br&gt;
This operation is concerned with fetching data from the server. You could also call it a read-only fetch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mutation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This operation involves creating, updating, and deleting data from a server. It is popularly called a CUD (create, update, and delete) operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subscriptions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This operation in GraphQL involves sending data from a server to its clients when specific events take place. They are usually implemented with  &lt;a href="https://itnext.io/how-we-manage-live-1m-graphql-websocket-subscriptions-11e1880758b0"&gt;WebSockets&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operation names&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are unique names for your client-side query and mutation operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variables and arguments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Operations can define arguments, very much like a function in most programming languages. Those variables can then be passed to query or mutation calls inside the operation as arguments. Variables are expected to be given at runtime during the execution of an operation from your client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aliasing&lt;/strong&gt;&lt;br&gt;
This is a convention in client-side GraphQL that involves renaming verbose or vague field names with simple and readable field names for the UI. Aliasing is necessary in use cases where you don't want to have conflicting field names.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rnzkE3So--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843891418/iex5UCpBR2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rnzkE3So--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843891418/iex5UCpBR2.png" alt="graph.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use GraphQL with Agility CMS
&lt;/h2&gt;

&lt;p&gt;In order to start querying your Content from Agility using GraphQL, you'll need to authenticate your requests and set up your GraphQL API client.&lt;br&gt;
To start, head over to the GraphQL IDE Playground in your Instance by going to  &lt;a href="https://manager.agilitycms.com/instance/8dbbc77b/en-us/settings/apikeys"&gt;Settings &amp;gt; API Keys&lt;/a&gt;  and clicking on the Explore GraphQL API button.&lt;br&gt;
You'll notice your GraphQL API URL endpoint that you'll want to update to include the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your Instance GUID.&lt;/li&gt;
&lt;li&gt;Indicate whether you want to source Published Content (Fetch) or Staging Content (Preview).&lt;/li&gt;
&lt;li&gt;The locale you wish to retrieve content from.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VnXvmV7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843918422/UGMAz1RQG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VnXvmV7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843918422/UGMAz1RQG.png" alt="1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, you'll also need to authenticate your request by adding your API Key as a header. To do this, click on the Set Headers button located on the left of the GraphQL API Playground.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gd6jhdWc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843972028/nqEAArGFU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gd6jhdWc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626843972028/nqEAArGFU.png" alt="2.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which API Key do I use?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you're fetching Published content and have defined it by using fetch in your GraphQL API URL endpoint, be sure to use your Fetch API Key.&lt;br&gt;
If you're fetching Staging content and have defined it by using preview in your GraphQL API URL endpoint, be sure to use your Preview API Key.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aQNKbG4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844012745/gph59rwSv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aQNKbG4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844012745/gph59rwSv.png" alt="3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Save to save your API Key as a header in your request.&lt;/p&gt;

&lt;p&gt;Once you've updated your GraphQL API URL and added your API Key as a header, you can click on the Reload button to reload the Docs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n2kRj9LS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844059495/aGNrUG7D4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n2kRj9LS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844059495/aGNrUG7D4.png" alt="0_qdkI8HW5xb_DQ__r.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've reloaded the Docs, you can click on the Docs button, and you should see Root. If you click on Root, you'll then be able to see the Content queryable from your Instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zBQGhZ_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844107490/7kCyFgLv4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zBQGhZ_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626844107490/7kCyFgLv4.png" alt="5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So far, we have learned about GraphQL Schema definition language, basic types, mutation and query types, and how you could authenticate it with your AgilityCMS instance. Now you will be able to create a basic schema with mutations and queries.&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why Headless CMS needs Page Management</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Thu, 17 Jun 2021 05:33:14 +0000</pubDate>
      <link>https://dev.to/krofax/why-headless-cms-needs-page-management-1b03</link>
      <guid>https://dev.to/krofax/why-headless-cms-needs-page-management-1b03</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;One of the most significant features of a content management system is that it allows non-developers to update the material. I believe we can all agree that we don't want our engineers to spend their time creating content (or copying and pasting it). &lt;br&gt;
Most headless CMS avoid "page management." They say that because the content is separated from its presentation, "pages" cannot be managed because they are only designed for a single output - your website. While this is correct, it misses the reality that your website is the primary anchor for online material, which necessitates a particular instance.&lt;br&gt;
However, one of the most common activities that editors require assistance with when working with a Headless CMS is generating pages, arranging sitemaps, and re-ordering components on a page. This, however, does not have to be the case.&lt;/p&gt;

&lt;p&gt;The major advantage of headless CMS is that it allows you to maintain a complex content architecture across various digital sites in a much more flexible and efficient manner. &lt;br&gt;
This paradigm is a major reason why people use headless CMS to deliver content to mobile applications, websites, smartwatches, AR/VR, and other devices. &lt;br&gt;
Most headless systems, on the other hand, reject the idea of "page management," claiming that the separation of information from its presentation precludes the administration of "pages," as they are only meant for a single output, which the concerned website. While this is correct, it misses the fact that your website is the primary anchor for online information, and therefore requires a specific scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Headless CMS?
&lt;/h2&gt;

&lt;p&gt;There are several types of &lt;a href="https://agilitycms.com/resouraces/guide/what-is-a-headless-cmshttps://agilitycms.com/resources/guide/top-10-reasons-why-you-should-choose-a-headless-cms-over-a-traditional-cms?utm_source=unikornsblog" rel="noopener noreferrer"&gt;headless CMSs&lt;/a&gt;. Some call themselves API-first, others content-first, and there are several additional variants of the headless trend. However, there is a flaw in the way headless CMSs work. &lt;br&gt;
Most of them can manage the content storage and delivery that makes headless so appealing. These platforms acknowledge the importance of distributing information via outlets other than traditional websites. This is feasible due to the ability to connect to APIs and distribute them to any front end. However, headless CMSs do not cater to the people who create this content - the editors and marketers.&lt;/p&gt;

&lt;p&gt;In contrast to a typical CMS, a headless content management system is completely divorced from the presentation layer or frontend, which is referred to as the "head." At the same time, the backend is your content repository and content management system, also known as the "body." &lt;br&gt;
When you remove your content repository's "body" from its display layer's "head," you have a headless CMS. What distinguishes a headless CMS from a typical CMS is its content-first approach, which includes full APIs for accessing and displaying material in any way preferred.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fyv2vSvG2Srx_rzeKLoluhXHGx2dvwMTrwUuActtOEbLdlEQFECW5m8HX5nMTRN82tcvLIsvcnJjAkkJXJfhuflRHPInhAA9nGPOyzvq87dIkkFbby-wHrb1i05Iy-u5lkhzXglnE" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fyv2vSvG2Srx_rzeKLoluhXHGx2dvwMTrwUuActtOEbLdlEQFECW5m8HX5nMTRN82tcvLIsvcnJjAkkJXJfhuflRHPInhAA9nGPOyzvq87dIkkFbby-wHrb1i05Iy-u5lkhzXglnE" alt="Image source: Agility CMS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A headless CMS allows you to create your content via the RESTful API and send it anywhere you need it, not only to a templated website or application. &lt;br&gt;
Because a pure headless CMS does not create any frontend code, it is also referred to as "Content-as-a-Service" (CaaS). &lt;br&gt;
This approach yields the greatest digital experience for the end-users of a certain device. Frontend developers may continue to create new features for any channel, regardless of the core/backend CMS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Headless CMS Without Page Management
&lt;/h2&gt;

&lt;p&gt;A developer often pre-determines all of the pages and routes on your site at the outset of website creation so that they can subsequently construct the content types to reflect them. &lt;br&gt;
But what about future pages? I'm not talking about just adding new blog posts or articles here (they are list items, not pages), but rather about adding genuine new pages to the site, maybe nested under other pages. What about landing sites, new lines of business, and so on?&lt;/p&gt;

&lt;p&gt;The second issue arises when we have a large number of pages that we wish to add to our website. If we have to develop a new content type to express it, we'll have a lot of content kinds to specify. Some CMS systems restrict the number of content types available, charging overages when a particular threshold is reached. That's a constraint in and of itself, but the greater issue here is who is performing the work: developers. &lt;br&gt;
When we predefine our pages ahead of time, a developer must undertake the effort of actually coding those routes.&lt;br&gt;
Then they must map those routes to the previously established content categories. Not only is it a lot of effort, but it also means we have to enlist the help of a developer every time we want to create a new page! &lt;br&gt;
There is an easier method.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Page Management?
&lt;/h2&gt;

&lt;p&gt;A headless CMS is essentially a content repository that stores material for usage across many channels. &lt;br&gt;
This is insufficient for today's marketer and restricts the organization's overall potential. &lt;/p&gt;

&lt;p&gt;While simple content definitions are a useful place to start for most developers and architects, they don't scale effectively. &lt;/p&gt;

&lt;p&gt;That is why built-in page management is so popular nowadays. &lt;br&gt;
Page management enables editors to generate and manage content by utilizing reusable building pieces referred to as modules. &lt;br&gt;
Using these construction pieces, editors may manage their site's page tree, adjust SEO, and define content connections and page functionality.&lt;br&gt;
Developers may also control which modules editors may add, where they go, and what they do. &lt;br&gt;
Page management also involves page templates. Developers build templates to limit the types of information that may be shown on your website, providing editors the ability to change them while maintaining consistent output. Each page template contains content zones where editors may drag and drop components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Headless CMS needs Page Management?
&lt;/h2&gt;

&lt;p&gt;One of the main benefits of a &lt;a href="https://buttercms.com/blog/what-is-headless-cms" rel="noopener noreferrer"&gt;headless CMS&lt;/a&gt; is that it enables companies to build a modern content architecture across different digital platforms and devices. Headless CMSs allow content teams to compose once and then publish everywhere, sending content to every platform and device customers are using.&lt;br&gt;
However, while headless CMSs give you robust functionalities, some vendor claim that the separation of content and presentation that characterizes the headless architecture makes the concept of page management obsolete. &lt;br&gt;
Websites are pretty much the anchor for every business and ought to be special care for the contents' architecture.&lt;br&gt;
Amongst others, avoiding duplicate content is a clear advantage because it increases reliability and decreases administrative burden (you don't have to cope with duplicated content across multiple channels). &lt;br&gt;
Let’s recap this one day in a life of a content editor from a typical marketing team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I need to create a new landing page specifically for the press. It will have the same content layout as the home page, but just different content.&lt;/li&gt;
&lt;li&gt;I need to be able to set the SEO properties for each page such as Meta Tags and Meta Descriptions.&lt;/li&gt;
&lt;li&gt;On the home page, we want the YoutTube video to be BELOW the Main Rich Text, but on our press page, we want the YouTube video to remain ABOVE the Main Rich Text.&lt;/li&gt;
&lt;li&gt;Our CEO doesn't like it, can we have the YouTube video ABOVE the Main Rich Text area on the homepage again?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The instances above demonstrate that the editor's requirements are hard to foresee. It's not their fault; it's simply the way the game is. Several changes occur when managing the material. &lt;br&gt;
Because not using Page Management for your digital solution makes it inflexible for editors, developers spend the majority of their time accepting orders, tweaking existing code to accommodate content needs, and wishing they were doing anything else! Developers should not be required to participate in content modifications. &lt;br&gt;
So, what does all of this mean in the end?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Editors cannot create/manage pages on their own without a developer&lt;/li&gt;
&lt;li&gt;Editors cannot control which components are on each page&lt;/li&gt;
&lt;li&gt;Developers get bored or burnt out&lt;/li&gt;
&lt;li&gt;More development resources/expenses required&lt;/li&gt;
&lt;li&gt;Productivity on the website suffers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, who's at fault in this? I'll give you a hint, it's not the editor, and it's not the developer... It's the architecture! &lt;/p&gt;

&lt;h2&gt;
  
  
  The Benefits of Headless CMS with Page Management
&lt;/h2&gt;

&lt;p&gt;Using Page Management, you can provide editors the ability to develop and manage pages for your digital solutions by utilizing reusable building blocks (i.e. modules &amp;amp; page templates). &lt;br&gt;
Content editors may use page management to control your site's page tree, page-level SEO characteristics, and what content and functionality will be on each page. &lt;br&gt;
As a developer and architect, you retain complete control over which page templates are exposed to the editor, where modules may be placed on the page, and what the modules may accomplish. &lt;/p&gt;

&lt;p&gt;To summarize the advantages of Page Management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empowered editors who can do more without a developer&lt;/li&gt;
&lt;li&gt;Happier developers who can focus on new functionality and enhancements, and less time responding to new content requirements&lt;/li&gt;
&lt;li&gt;Increased productivity&lt;/li&gt;
&lt;li&gt;Fewer resources/expenses required&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Elements of Page Management
&lt;/h2&gt;

&lt;p&gt;While checking out Headless CMS vendors, the following are some elements you should consider. However, in this article, we would be using Agility CMS as a reference because they do have robust support for page management.&lt;/p&gt;

&lt;p&gt;There are three things to consider during development, there are;&lt;br&gt;
 Page templates, module definitions, and digital channels and sitemaps. Let's take a look at these three elements. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page Templates: Templates allow developers to determine a name and a set of modules where content editors can add content. Developers can also write code to render this template into an HTML document. &lt;/li&gt;
&lt;li&gt;Modules: Modules are reusable fields from a header to more complex UI elements such as a sliding image carousel. In short, modules are the building blocks that enable complex websites. &lt;/li&gt;
&lt;li&gt;Digital Channels and Sitemaps: A sitemap is a content structure that developers use to render the website. In Agility CMS, websites have one or more sitemaps defined, each in its channel, enabling multi-site management and granular control over each digital property. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three things are the bedrock of potential page management headless CMS.&lt;br&gt;
In the next section, we would look at how Agility CMS handles pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Headless CMS have Page Management?
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://www.g2.com/categories/headless-cms#grid" rel="noopener noreferrer"&gt;G2 Crowd Headless CMS grid&lt;/a&gt;, there are 3 leaders in this space. Let’s review their Page Management options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agility CMS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2F--3ebLOx0sM9VbPpf0hc1M7cc3rb2Q_gsW4V2q9j9lKtHF3VPi5HmnCJrA53s3lPohgT8mJ1gvIPTYm_a7NrWhe4qOo8iu134z917oaiLIes0eOY7NCgjeb5-DoSp4LVUJejmvJK" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2F--3ebLOx0sM9VbPpf0hc1M7cc3rb2Q_gsW4V2q9j9lKtHF3VPi5HmnCJrA53s3lPohgT8mJ1gvIPTYm_a7NrWhe4qOo8iu134z917oaiLIes0eOY7NCgjeb5-DoSp4LVUJejmvJK" alt="Agility Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.agilitycms.com/?utm_source=unikornsblog" rel="noopener noreferrer"&gt;Agility CMS&lt;/a&gt; is the pioneer in this space. Agility had Page Management from the very beginning since 2003, it is not a recently added feature.&lt;br&gt;
With Agility CMS, you can define three things that make Page creation and editing simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page Templates: Templates allow developers to determine a name and a set of modules where content editors can add content. Developers can also write code to render this template into an HTML document. &lt;/li&gt;
&lt;li&gt;Modules: Modules are reusable sets of fields that can go from a header to more complex UI elements such as a sliding image carousel. In short, modules are the building blocks that enable complex websites. &lt;/li&gt;
&lt;li&gt;Digital Channels and Sitemaps: A sitemap is a content structure that developers use to render the website. In Agility CMS, websites have one or more sitemaps defined, each in its channel, enabling multi-site management and granular control over each digital property. &lt;/li&gt;
&lt;li&gt;URL Management: create redirects, test them, and do bulk edits right in the CMS&lt;/li&gt;
&lt;li&gt;SEO Fields: define meta keys words and Mets descriptions, page names and decide if pages need to be shown in your sitemap right in the CMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main thing about Agility CMS is that instead of coding and routing each page individually, developers now have to code only a few page templates and modules. These templates can be reused across the website, sharply reducing the amount of work that developers need to do from the beginning. &lt;/p&gt;

&lt;h2&gt;
  
  
  The cost of Page Management with Agility CMS
&lt;/h2&gt;

&lt;p&gt;Page Management is included as a default feature on all Agility CMS pricing packages incl. a free Developer plan. It is FREE and you don’t need to pay extra to use it.&lt;br&gt;
Agility CMS &lt;a href="https://agilitycms.com/pricing" rel="noopener noreferrer"&gt;paid plans to start&lt;/a&gt; at $490 for Business Pan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contentful
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FOS3lsb9fSHbW_XdOmMyXuAgVoIkHq2tArWbBTcYsZ8aOIbxA7O4-jsprgW_drkDO5PieLqfnUTiWYfTIUPslurV2b596n-3ul-abv2u2goKkwuS-GqPr-uaGA7r4ucmJr4JdKaUn" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FOS3lsb9fSHbW_XdOmMyXuAgVoIkHq2tArWbBTcYsZ8aOIbxA7O4-jsprgW_drkDO5PieLqfnUTiWYfTIUPslurV2b596n-3ul-abv2u2goKkwuS-GqPr-uaGA7r4ucmJr4JdKaUn" alt="Contentful Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.contentful.com/help/introduction-to-compose/" rel="noopener noreferrer"&gt;Compose&lt;/a&gt; is a brand new application by Contentful that allows you to build and publish web pages in a few steps. &lt;br&gt;
Compose is a streamlined version of the Contentful web app that is designed specifically for editors and authors who don’t want to mess around with the more technical aspects of Contentful. Unlike the web app, Compose does not require content modeling knowledge. Instead, editors can assemble pages from predefined content components and media, without involving additional engineering resources. &lt;/p&gt;

&lt;p&gt;Compose experience is not the same as using Contentful with Page Management and characterized by the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compose is used for the quick creation of web pages.&lt;/li&gt;
&lt;li&gt;Pages and fields are predefined and do not require extra setup.&lt;/li&gt;
&lt;li&gt;The hierarchy of the page building blocks is displayed in a single editing view.&lt;/li&gt;
&lt;li&gt;Entries can be published all at once with a single click.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The cost of Page Management with Contentful
&lt;/h2&gt;

&lt;p&gt;For Team users, Compose + Launch &lt;a href="https://www.contentful.com/contentful-apps/#:~:text=For%20Team%20users%2C%20Compose%20%2B%20Launch,operations%20of%20your%20normal%20spaces." rel="noopener noreferrer"&gt;can be added&lt;/a&gt; to all spaces within your organization for $1,995/month. The apps are available for a free 10-day trial, which will create a test space that allows you to test Compose + Launch without impacting the content or operations of your normal spaces.&lt;br&gt;
Contentful Team plans start at $499.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kontent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FIrZQETMMZISES8e10l7xz6Na3pxVGh_Jyw3WpXVXB_tthnshpUoMpCPe0MsJzqrA1QgLUtr6NYKX1lmUK2V279sc-X5N4PTia-NmBrEGpwyYyYcPIZa-rwKlFCXWkLgH46xnNkg_" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FIrZQETMMZISES8e10l7xz6Na3pxVGh_Jyw3WpXVXB_tthnshpUoMpCPe0MsJzqrA1QgLUtr6NYKX1lmUK2V279sc-X5N4PTia-NmBrEGpwyYyYcPIZa-rwKlFCXWkLgH46xnNkg_" alt="Kontent Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently, Kontent offers Web Spotlight as their Page Management feature. &lt;br&gt;
&lt;a href="https://docs.kontent.ai/tutorials/set-up-kontent/set-up-your-project/web-spotlight" rel="noopener noreferrer"&gt;Web Spotlight&lt;/a&gt; combines in-context website management with the flexibility and multi-channel support of a headless CMS.&lt;/p&gt;

&lt;p&gt;Web Spotlight makes it easy to create pages, add content, and rearrange components without any help from developers. Once you’re done, add the page to your navigation so all visitors can find it. With this feature, you can update content right within the pages of your websites. Changes can be made in seconds, without wondering how everything will look once it's published.&lt;br&gt;
The cost of Page Management with Kentico Content&lt;br&gt;
Web Spotlight is not included for free, you can add to your plan for $499/month. Kentico Plans start at $1249 for Business and $2,499 for Premium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Headless CMS is the future of content management, with a clear shift away from traditional CMS and toward Jamstack API-based design. &lt;br&gt;
Headless CMS is no longer exclusively for developers. &lt;br&gt;
Headless CMS systems that empower content producers while freeing up developers' time are required by both enterprise teams and marketing experts. &lt;br&gt;
This is where Page Management enters the picture. &lt;br&gt;
Content editors may use page management to build and move pages across the sitemap in any way they see appropriate, as well as add modules to websites and update the properties of these modules.&lt;br&gt;
No matter how complex a headless CMS vendor package looks to be, it's critical to know if page management is a function they take seriously, especially if you want your website's pages and contents to be dynamically organized. &lt;br&gt;
Page Management is available in all three Headless CMS leaders, Agility CMS, Contentful, and Kontent. Agility CMS includes it as a standard feature on all plans, even the free one. A Page Management add-on costs $499 per month from Contentful and Kontent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://agilitycms.com/resources/guide/how-to-design-a-content-first-strategy-using-agility-cms" rel="noopener noreferrer"&gt;How to Design A Content-First Strategy using Agility CMS&lt;/a&gt; - Agility CMS&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.smashingmagazine.com/2018/11/structured-content-done-right/" rel="noopener noreferrer"&gt;Strategies For Headless Projects With Structured Content Management Systems&lt;/a&gt; - Knut Melvær&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/why-you-as-a-developer-should-be-using-a-cms" rel="noopener noreferrer"&gt;Why You as a Developer Should be Using a CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/headless-commerce-explained-definitions-use-cases-and-roadblocks" rel="noopener noreferrer"&gt;Headless Commerce Explained: Definitions, Use Cases, and Roadblocks | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/apis-vs-sdks-what-s-the-difference" rel="noopener noreferrer"&gt;APIs vs. SDKs: What's the Difference? | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/static-site-generators" rel="noopener noreferrer"&gt;TOP Static Site Generators to Watch in 2021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/what-s-the-difference-between-headless-cms-and-static-site-generator/" rel="noopener noreferrer"&gt;Difference between Headless CMS and static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://agilitycms.com/resources/posts/what-is-netlify-and-why-should-you-care-as-an-editor" rel="noopener noreferrer"&gt;What is Netlify and Why Should You Care as an Editor? | Agility CMS&lt;/a&gt;
&lt;a href="https://agilitycms.com/resources/guide/what-is-a-headless-cms" rel="noopener noreferrer"&gt;What is a Headless CMS? | Agility CMS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/guide/top-10-reasons-why-you-should-choose-a-headless-cms-over-a-traditional-cms" rel="noopener noreferrer"&gt;Benefits of Headless CMS vs a Traditional CMS | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/content-architecture" rel="noopener noreferrer"&gt;Content Architecture: The Key to Organizing and Managing Your Content and Team&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/wordpress-vs-agility-cms" rel="noopener noreferrer"&gt;WordPress And Its Alternatives: Headless CMS | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/whitepaper/proprietary-vs-open-source-content-management-systems" rel="noopener noreferrer"&gt;Open Source CMS vs. Proprietary CMS: Can You Have the Best of Both? | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/react-cms" rel="noopener noreferrer"&gt;Choosing a React CMS: What to Look For? | Agility CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/content-modelling" rel="noopener noreferrer"&gt;Take control of your Content Architecture: Content Modelling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/the-benefits-of-a-hybrid-dxp" rel="noopener noreferrer"&gt;DXP vs Headless CMS: Modern DXP Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agilitycms.com/resources/posts/top-jamstack-pioneers" rel="noopener noreferrer"&gt;Jamstack Development: 10 JAMstack Pioneers You Need To Know About in 2021&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>headlesscms</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Page Management in Headless CMS</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Fri, 16 Apr 2021 13:09:20 +0000</pubDate>
      <link>https://dev.to/krofax/page-management-in-headless-cms-3b39</link>
      <guid>https://dev.to/krofax/page-management-in-headless-cms-3b39</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Almost ten years ago, National Public Radio's (NPR) Daniel Jacobson guest blogged at &lt;a href="https://www.programmableweb.com/news/cope-create-once-publish-everywhere/2009/10/13" rel="noopener noreferrer"&gt;programmableweb.com&lt;/a&gt; about their approach, summed up in the acronym COPE, which stands for "Create Once, Publish Everywhere." &lt;br&gt;
This article would introduce you to a content management system providing content to multiple digital interfaces through an API — not through an HTML rendering machine — as most CMSs at the time (and arguably now) did.&lt;/p&gt;

&lt;p&gt;The main benefit of headless CMS is that it provides a much more flexible and efficient way to maintain a sophisticated content architecture across multiple digital properties.&lt;br&gt;
 This paradigm is a significant factor in why folks choose headless CMS to send content to mobile apps, websites, smartwatches, AR/VR, etc.&lt;br&gt;
However, most headless platforms eschew the concept of "page management" because they claim that the separation of content from its presentation disallows the management of "pages," as they are only intended for a single output, which the concerned website. While this is true, it also ignores that the main anchor for online content is your website, and it needs a particular case.&lt;/p&gt;

&lt;p&gt;In this article, I'll introduce you to the dynamics of page management, the benefits, and why you should look out for a page management feature in any headless CMS vendor you decide to use&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Page Management?
&lt;/h2&gt;

&lt;p&gt;One of the main benefits of a (headless CMS)[&lt;a href="https://buttercms.com/blog/what-is-headless-cms" rel="noopener noreferrer"&gt;https://buttercms.com/blog/what-is-headless-cms&lt;/a&gt;] is that it enables companies to build a modern content architecture across different digital platforms and devices. Headless CMSs allow content teams to compose once and then publish everywhere, sending content to every platform and device customers are using.&lt;br&gt;
However, while headless CMSs give you robust functionalities, some vendors claim that the separation of content and presentation that characterizes the headless architecture makes the concept of page management obsolete. &lt;br&gt;
Websites are pretty much the anchor for every business and ought to be special care for the contents' architecture.&lt;br&gt;
Amongst others, avoiding duplicate content is a clear advantage because it increases reliability and decreases administrative burden (you don't have to cope with duplicated content across multiple channels). &lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Page Management
&lt;/h2&gt;

&lt;p&gt;With Page Management, you can create and manage pages for your digital solutions using reusable building blocks (i.e., modules &amp;amp; page templates).&lt;br&gt;
You can manage the site's page tree, page-level SEO properties and determine what content and functionality will be on each page.&lt;br&gt;
The following are the benefits of page management;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It empowers editors who can do more without a developer.&lt;/li&gt;
&lt;li&gt;Happier developers who can focus on new functionality and enhancements, and less time responding to new content requirements&lt;/li&gt;
&lt;li&gt;Increased productivity&lt;/li&gt;
&lt;li&gt;Fewer resources/expenses are required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Elements of Page Management
&lt;/h2&gt;

&lt;p&gt;While checking out Headless CMS vendors, the following are some elements you should consider. However, in this article, we would be using Agility CMS as a reference because they do have robust support for page management.&lt;/p&gt;

&lt;p&gt;There are three things to consider during development, there are;&lt;br&gt;
 Page templates, module definitions, and digital channels and sitemaps. Let's take a look at these three elements. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page Templates: Templates allow developers to determine a name and a set of modules where content editors can add content. Developers can also write code to render this template into an HTML document. &lt;/li&gt;
&lt;li&gt;Modules: Modules are reusable fields from a header to more complex UI elements such as a sliding image carousel. In short, modules are the building blocks that enable complex websites. &lt;/li&gt;
&lt;li&gt;Digital Channels and Sitemaps: A sitemap is a content structure that developers use to render the website. In Agility CMS, websites have one or more sitemaps defined, each in its channel, enabling multi-site management and granular control over each digital property. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three things are the bedrock of potential page management headless CMS.&lt;br&gt;
In the next section, we would look at how Agility CMS handles pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Agility CMS Handles Pages
&lt;/h2&gt;

&lt;p&gt;As mentioned in the previous section, let's look at how Agility CMS cares for pages or content in this section;&lt;br&gt;
Agility CMS allows you to define three things that make working with pages accessible for both content editors and developers to work. Developers set up the templates and definitions, while content editors determine how and where they want to use those templates and definitions. This part of the content architecture is fundamental to the success of any CMS solution that includes a website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Page Templates
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fpage-template.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fpage-template.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It allows a developer to determine a template name and a set of module zones that content editors can drop content into using modules. The developer can then write code in the website to render this template into HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  Module Definitions
&lt;/h2&gt;

&lt;p&gt;Modules are the building blocks that enable a content editor to create a complex website structure with tools the developer has set up to succeed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fresources%2Fdiagrams%2Ftemplates%2Fmodule-definitions.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fresources%2Fdiagrams%2Ftemplates%2Fmodule-definitions.svg" alt="Module Definitions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It allows a developer to define a set of fields to render a reusable item inside a template module zone. It could be a header with a description generated as an &lt;code&gt;&amp;lt;H1&amp;gt;&lt;/code&gt; and an &lt;code&gt;&amp;lt;P&amp;gt;&lt;/code&gt; element. It could be a complex user interface component, such as a slider carousel, contact form, or blog posts listing.&lt;br&gt;
The developer has the choice of what properties the content editor will have to work. These can be simple text, number, or date fields; they can add image or file attachment fields or link to other content defined elsewhere, such as shared content. What's more, those shared content items or lists can then link to other shared content as well!&lt;br&gt;
Fantastic isn’t it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Digital Channels &amp;amp; Sitemaps
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fresources%2Fdiagrams%2Ftemplates%2Fsitemaps-channels.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.agilitycms.com%2Fresources%2Fdiagrams%2Ftemplates%2Fsitemaps-channels.svg" alt="Sitemaps and Digital Channels"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each Agility CMS website can have one or more sitemaps defined, each in its digital channel. It can use each digital channel to control a separate digital property. It could, for example, be for a contest or a completely different branded site.&lt;br&gt;
Essentially a sitemap is a nested content structure which the developer will use to render on the website. Giving the content editor the control to manage multiple page content channels is a compelling and cost-effective way to manage content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shared Content is Vital
&lt;/h2&gt;

&lt;p&gt;Agility believes in a "content first" approach to designing your content architecture, and that starts with the shared content section in their suite. It is where all your main lists and items will live, and this is where you'll create most of your content that is reused across multiple destinations or endpoints, such as your app, social networks, etc.&lt;br&gt;
However, the pages section is often the first place to find the content they are working on. Your content teams' primary responsibility is the website itself, and seeing what page something on makes sense to people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we took a brief dive into the benefits and elements of page management and why one(a developer or editor) should be interested in such a feature as an avenue to create and dynamic content without stress.&lt;br&gt;
No matter how sophisticated a headless CMS vendor package appears, it's essential to know if page management is among their feature they take seriously, especially if you desire to have the pages and contents of your website dynamically structured.&lt;br&gt;
You can also try Agility CMS for (FREE)[&lt;a href="https://agilitycms.com/product/pricing" rel="noopener noreferrer"&gt;https://agilitycms.com/product/pricing&lt;/a&gt;] and spin a new instance with our (Gatsby starter)[&lt;a href="https://agilitycms.com/resources/posts/gatsby-cloud-announces-their-new-partnership-with-agility-cms" rel="noopener noreferrer"&gt;https://agilitycms.com/resources/posts/gatsby-cloud-announces-their-new-partnership-with-agility-cms&lt;/a&gt;].&lt;br&gt;
Let me know what you feel in the comment section below about using page management in a Headless CMS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;(How to Design A Content-First Strategy using Agility CMS)[&lt;a href="https://agilitycms.com/resources/guide/how-to-design-a-content-first-strategy-using-agility-cms" rel="noopener noreferrer"&gt;https://agilitycms.com/resources/guide/how-to-design-a-content-first-strategy-using-agility-cms&lt;/a&gt;] - Agility CMS&lt;/li&gt;
&lt;li&gt;(Strategies For Headless Projects With Structured Content Management Systems)[&lt;a href="https://www.smashingmagazine.com/2018/11/structured-content-done-right/" rel="noopener noreferrer"&gt;https://www.smashingmagazine.com/2018/11/structured-content-done-right/&lt;/a&gt;] - Knut Melvær&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>headless</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Integrating Headless CMS with Zapier</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Wed, 03 Mar 2021 13:40:50 +0000</pubDate>
      <link>https://dev.to/krofax/integrating-headless-cms-with-zapier-1ia3</link>
      <guid>https://dev.to/krofax/integrating-headless-cms-with-zapier-1ia3</guid>
      <description>&lt;h3&gt;
  
  
  Introduction:
&lt;/h3&gt;

&lt;p&gt;One of the enormous problems I've faced while working on projects is having to deal with integrating content and events into third-party services.&lt;br&gt;
It's time-consuming, demands in the application in question grow, so does the mental strain in keeping up to pace with all the changes in the REST APIs involved. If that wasn't challenging enough, customer demands to integrate with all sorts of third-party services can (if left unchecked) be unsustainable in the long-run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zapier: The integration helper
&lt;/h3&gt;

&lt;p&gt;Zapier is a web service that automates data flow between over 500 web apps, including MailChimp, Salesforce, GitHub, and Trello.&lt;/p&gt;

&lt;p&gt;Imagine building an application that triggers when a user fills out your Typeform form, then automatically creates an event on your Google Calendar, sends a Slack notification, and finishes up by adding a row to a Google Sheets spreadsheet.&lt;br&gt;
Writing all those functionalities from scratch is overkill and can be time-consuming. In such cases, Zapier comes in extremely handy.&lt;/p&gt;

&lt;p&gt;For engineers tasked with writing manual integrations or reverse engineer some task, thinking about solving the same problem with Zapier cuts down most of the work they probably need to do.&lt;br&gt;
The reason being is that instead of having to deal with parsing and validating JSON schemas and having to generate request payloads manually, all of this is handled by Zapier's internal integrations, removing the need to develop and maintain code for every REST API.&lt;/p&gt;

&lt;p&gt;In terms of Content Management, this can be incredibly useful for managing the flow of content across various channels, including other CMS systems. &lt;br&gt;
 For example, Agility CMS already has a modern-webhook system that integrates exceptionally well with &lt;a href="https://zapier.com/engineering/automating-billions-of-tasks/"&gt;Zapier's back-end system&lt;/a&gt; (and &lt;a href="https://zapier.com/developer/documentation/v2/how-does-it-work/"&gt;here&lt;/a&gt;).&lt;br&gt;
Because of this, all of the changes made on Agility CMS are available nearly instantaneously* via Zapier's ability to integrate with subscriber RestHook systems. It's essential for ensuring that all the various channels receive the new content the moment they become published.&lt;/p&gt;

&lt;p&gt;This article would use Agility CMS as a case study because of its seamless integration with Zapier and Its other exciting features that other headless CMS might not have.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting with Agility CMS
&lt;/h3&gt;

&lt;p&gt;For this tutorial, we will be using Agility CMS as our case study.&lt;br&gt;
When you create an Agility CMS Zap, you'll need to enter your Agility CMS API key along with some other required fields.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iFqgLS7r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.zappy.app/6b86d4b1c34ef09b3a317dd6d1cb6000.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iFqgLS7r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.zappy.app/6b86d4b1c34ef09b3a317dd6d1cb6000.png" alt="Agility CMS API Key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To locate your API Key in your Agility CMS account, please follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log into the Agility Content Manager.&lt;/li&gt;
&lt;li&gt;Click on "Settings" on the left-hand Navigation&lt;/li&gt;
&lt;li&gt;Choose "API Keys"&lt;/li&gt;
&lt;li&gt;Click the "Copy" button beside each of the authorization values and paste into the appropriate field.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wxIO2wM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.zappy.app/61ee211553cf8ac15c710c054ce99110.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wxIO2wM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.zappy.app/61ee211553cf8ac15c710c054ce99110.png" alt="Agility CMS API Key in account"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paste your key back into your Zapier account and then “Continue.”&lt;br&gt;
If all steps were successful, your Agility CMS account will now be successfully connected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Agility lets you integrate your content into almost any website and application due to the flexibility it has in regards to how you do so (REST endpoints, Webhooks), and now with &lt;a href="https://zapier.com/help/doc/how-to-get-started-with-agility-cms-on-zapier"&gt;Zapier integration&lt;/a&gt;, it can integrate with so much more!&lt;br&gt;
If you have any comments or questions about building apps with Agility CMS, &lt;a href="https://twitter.com/AgilityCMS"&gt;reach out to them on Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Fullstack CMS with NextJS and AgilityCMS
</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Wed, 20 Jan 2021 06:57:56 +0000</pubDate>
      <link>https://dev.to/krofax/fullstack-cms-with-nextjs-and-agilitycms-k5n</link>
      <guid>https://dev.to/krofax/fullstack-cms-with-nextjs-and-agilitycms-k5n</guid>
      <description>&lt;p&gt;In the dispensation of frameworks and stacks, a ton of awesome stacks such as MERN, LAMP, MEAN and MEVN stack have been released over the years to simplify the work of a developer in the quest to create scalable and efficient applications. However, quite a lot of them (MEAN, LAMP) impose a very strict learning curve and often times demands more costs to scale and maintain, while this is great it might quickly get tiresome for a startup or a low-level budget project.&lt;br&gt;
This is the reason why a combination of NextJs and headless cms like AgilityCMS is considered to be a good choice for building 21st -century web application.&lt;/p&gt;

&lt;p&gt;With NextJs, a client-side and server-side based framework, it ensures all your code is bundled and minimized using a bundler like webpack, it makes implementing optimizations like code splitting to improve page performance.&lt;br&gt;
For frontend developers that love typescript, all you would need to get them started is a few lines of config in tsconfig.js.&lt;br&gt;
Interestingly, Nextjs pre-renders pages by default. This means every page will use static site generation by default, one of the two rendering options that make up the hybrid architecture of Next.js.&lt;/p&gt;

&lt;p&gt;Agility CMS on the other note is a JAMStack focused Headless CMS with Page Management built-in. Agility CMS is a Content-First Headless CMS, allowing you to choose any programming language while also getting the flexibility, speed, and power that comes from lightweight APIs. It comes with a Page Management feature, that allows you to manage your website pages.&lt;br&gt;
Agility CMS will come in very handy if you’re working on an eCommerce, Online Ticketing oriented projects, and even more.&lt;br&gt;
The editor experience on AgilityCMS is so amazing, such that’s lacking in other headless cms.&lt;br&gt;
 Agility CMS is a complete Digital Experience Platform–saving time, removing limitations, and allowing for seamless experiences across all digital channels.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll learn how and what it takes to build a full-stack project maximizing NextJs and AgilityCMS, with a little learning curve and minimal cost.&lt;br&gt;
In the end, you would be comfortable building your next full-stack project without having to worry about what full-stack framework you would be needing.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Agility CMS?
&lt;/h1&gt;

&lt;p&gt;Maybe you are not quite ready to get started with Agility CMS yet, or you have not convinced to embrace the goodies that come with Agility CMS.&lt;br&gt;
 Allow me to give you a few reasons why you may want to consider Agility CMS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limitless Headless CMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Agility flexible, extensible, API-first platform to create next-level digital experiences using any coding language or front-end framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Any Programming Language

&lt;ul&gt;
&lt;li&gt;The Agility CMS approach embraces any programming language or frameworks. &lt;a href="https://github.com/agility/agilitycms-nextjs-starter-2020" rel="noopener noreferrer"&gt;Nextjs&lt;/a&gt;, &lt;a href="https://github.com/agility/gatsby-source-agilitycms" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt;, &lt;a href="https://github.com/joelvarty/agility-vue-app" rel="noopener noreferrer"&gt;Vuejs&lt;/a&gt;, &lt;a href="https://github.com/joelvarty/agility-nuxt-app" rel="noopener noreferrer"&gt;Nuxt&lt;/a&gt;, and &lt;a href="https://github.com/agility/agilitycms-eleventy-starter-2020" rel="noopener noreferrer"&gt;Eleventy&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Page Management

&lt;ul&gt;
&lt;li&gt;One of the main benefits of the Agility CMS Content API and the accompanying SDKs is &lt;a href="https://agilitycms.com/resources/guide/why-agility-cms-has-page-management-as-a-headless-cms" rel="noopener noreferrer"&gt;Page Management&lt;/a&gt;. This does not refer to HTML pages on a website, but rather the JSON objects that represent all of the information on a page. Agility CMS allows your content editors to assemble the page object based on a template and set of modules, and then you can render that content using components in code. These components are reusable, allowing your developers to spend more time coding new functionality instead of re-creating existing features on new pages.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Restful API

&lt;ul&gt;
&lt;li&gt;The Javascript is essentially an ease-of-use layer on top of the raw REST API. If you are building a mobile app, or if you need to use a language other than Javascript, you can call the REST API directly. You can learn how to do this on our help site using our &lt;a href="https://help.agilitycms.com/hc/en-us/articles/360031985112" rel="noopener noreferrer"&gt;reference guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Multiple Front-End Integrations

&lt;ul&gt;
&lt;li&gt;Agility CMS provides a &lt;a href="https://help.agilitycms.com/hc/en-us/articles/360031945912" rel="noopener noreferrer"&gt;Javascript SDK&lt;/a&gt; and a zero-config starter kit for &lt;a href="https://github.com/agility/agilitycms-nextjs-starter-2020" rel="noopener noreferrer"&gt;Nextjs&lt;/a&gt;, &lt;a href="https://github.com/agility/gatsby-source-agilitycms" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt;, &lt;a href="https://github.com/joelvarty/agility-vue-app" rel="noopener noreferrer"&gt;Vuejs&lt;/a&gt;, &lt;a href="https://github.com/joelvarty/agility-nuxt-app" rel="noopener noreferrer"&gt;Nuxt&lt;/a&gt;, and &lt;a href="https://github.com/agility/agilitycms-eleventy-starter-2020" rel="noopener noreferrer"&gt;Eleventy&lt;/a&gt;, to help you get up and running. The SDK provides async method calls for all of the various areas where you need to pull data: shared content, content items, pages, sitemaps, and galleries.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Each method call requires you to provide a GUID and API Key as authentications. You can also specify which language code you need content in, making multi-lingual sites easy to build.&lt;/li&gt;

&lt;li&gt;Content Sync SDK

&lt;ul&gt;
&lt;li&gt;The Javascript SDK also includes methods to synchronize the content items and pages in your Agility CMS Instance. These calls allow you to pull everything you need down to your web server and to persist it locally. Syncing content and pages can greatly speed up your build time and will reduce the number of API calls you need to make.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;WebHooks

&lt;ul&gt;
&lt;li&gt;Agility CMS has content webhooks that allow external applications or websites to become aware of content changes that occur within your Agility CMS instance. This works by providing a list or URL endpoints to Agility CMS. Each time content changes in the CMS, Agility will notify each endpoint of the change and pass-on a message representing the exact change that occurred. To get started check &lt;a href="https://agilitycms.com/resources/whitepaper/agility-cms-content-sdks-and-apis" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  Building with Nextjs and Agility CMS
&lt;/h1&gt;

&lt;p&gt;I guess you’ve come to the phase you’ve been waiting for.&lt;br&gt;
Olga, in this &lt;a href="https://olgaagilitycms.medium.com/agility-cms-next-js-snipcart-tutorial-472bae47567f" rel="noopener noreferrer"&gt;post&lt;/a&gt;, explains extensively how easy is it to build a full-stack project using Nextjs and AgilityCMS.&lt;br&gt;
The post is a walkthrough of a shopping list built using Nextjs, snipcart, and AgilityCMS. At the end of the post, you’d have a full grasp of how to practically build a full-stack app in minutes maximizing AgilityCMS and Next.&lt;/p&gt;

&lt;p&gt;Eslam wrote a concise article on &lt;a href="https://blog.logrocket.com/prefetching-dynamic-routing-next-js/" rel="noopener noreferrer"&gt;Prefetching and dynamic routing with Next.js and Agility CMS&lt;/a&gt;. In this article, he built a full-stack blog using the prefetching and dynamic routing in Next and the content creation and retrieval feature in Agility CMS. This article portrays the dynamic relationship between Agility CMS and Nextjs.&lt;/p&gt;

&lt;h1&gt;
  
  
  Deploying to Vercel
&lt;/h1&gt;

&lt;p&gt;I suppose you’ve gone through the articles in the previous section, if you haven’t I urge you to go through them.&lt;br&gt;
Now that you’ve well understood how Agility CMS and Nextjs work seamlessly together, and easy deployment is something you want.&lt;br&gt;
The good news is Agility CMS has a straightforward built-in-integration with vertical.&lt;/p&gt;

&lt;p&gt;Vercel is a cloud platform for static sites and Serverless Functions that fits perfectly with your workflow. It enables developers to host websites and web services with a few clicks.&lt;br&gt;
The most interesting thing is that vercels free tier is a perfect choice for a starter project and even a larger project &lt;br&gt;
Vercel is the company responsible for creating Nextjs.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://manager.agilitycms.com/" rel="noopener noreferrer"&gt;Agility CMS Manager&lt;/a&gt; facilitates the process of deployment, here’s how it works.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You will need to have a &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and a &lt;a href="https://vercel.com/signup" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; account to get your project deployed”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To start, in your agilitycms dashboard, head by going into Settings &amp;gt; Domain Configuration, and add a new Domain”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159071%2FScreen_Shot_2020-10-29_at_10.05.17_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159071%2FScreen_Shot_2020-10-29_at_10.05.17_AM.png" alt="Domain Config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on Setup to connect to Vercel and deploy your Next.js website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159091%2FScreen_Shot_2020-10-29_at_10.06.14_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159091%2FScreen_Shot_2020-10-29_at_10.06.14_AM.png" alt="Choose Vercel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give your project a name. It will be cloned from agilitycms-nextjs-starter repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159151%2FScreen_Shot_2020-10-29_at_9.42.33_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360075159151%2FScreen_Shot_2020-10-29_at_9.42.33_AM.png" alt="Give your project a name"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the agilitycms-nextjs-starter into a new Git repository. This will ensure you can make updates to your project after deployment. Every push to the Git repository will automatically be deployed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926492%2FScreen_Shot_2020-10-29_at_9.49.40_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926492%2FScreen_Shot_2020-10-29_at_9.49.40_AM.png" alt="Screen_Shot_2020-10-29_at_9.49.40_AM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When your deployment is done, authorize access between Vercel and your Agility CMS content so that we can automatically configure your Production and Preview domains.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926532%2FScreen_Shot_2020-10-29_at_9.55.37_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926532%2FScreen_Shot_2020-10-29_at_9.55.37_AM.png" alt="Screen_Shot_2020-10-29_at_9.55.37_AM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once authorized, you will be taken back into your Agility CMS Manager, and you will see that your Production and Preview domains have been set. You can click on the link to view your live site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926552%2FScreen_Shot_2020-10-29_at_10.01.13_AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhelp.agilitycms.com%2Fhc%2Farticle_attachments%2F360074926552%2FScreen_Shot_2020-10-29_at_10.01.13_AM.png" alt="Screen_Shot_2020-10-29_at_10.01.13_AM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎉  Congratulations! You've successfully deployed your Next.js and Agility CMS website to Vercel!&lt;/p&gt;

&lt;p&gt;Sites built with Agility CMS&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.scene.ca/en-ca" rel="noopener noreferrer"&gt;Scene&lt;/a&gt; - Read the &lt;a href="https://agilitycms.com/resources/case-studies/scene" rel="noopener noreferrer"&gt;case study&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visitorlando.com/en-ca" rel="noopener noreferrer"&gt;VisitOrlando&lt;/a&gt; - Read &lt;a href="https://agilitycms.com/resources/case-studies/visit-orlando" rel="noopener noreferrer"&gt;case study&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.hockeycanada.ca/en-ca" rel="noopener noreferrer"&gt;Hockey Canada&lt;/a&gt; - Read &lt;a href="https://agilitycms.com/resources/case-studies/hockey-canada" rel="noopener noreferrer"&gt;case study&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I hope you enjoyed this article.&lt;br&gt;
We looked at the uniqueness of Agility CMS and how we could use both Nextjs and AgilityCMS to build a full-stack project, deploy the project for free to vercel with a few clicks.&lt;br&gt;
You would agree with me, that process of building a full-stack application with from development to deployment is much easier than the conventional process of adopting a LAMP or MERN stack.&lt;br&gt;
Let your creativity flow, and please do share your projects in the comments section below — I’d love to see what you come up with!&lt;/p&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.logrocket.com/prefetching-dynamic-routing-next-js/" rel="noopener noreferrer"&gt;Prefetching and dynamic routing with Next.js and Agility CMS&lt;/a&gt; - Eslam&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://olgaagilitycms.medium.com/agility-cms-next-js-snipcart-tutorial-472bae47567f" rel="noopener noreferrer"&gt;Building a full-stack shopping list with Agility CMS, Next.js &amp;amp; Snipcart&lt;/a&gt; - Olga&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/coderoflagos/introduction-to-agility-cms-4oon"&gt;Introduction to Agility CMS&lt;/a&gt; - Opemipo Disu&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>headlesscms</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Top 10 JAMstack CMS In 2022</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Fri, 04 Dec 2020 12:54:35 +0000</pubDate>
      <link>https://dev.to/krofax/top-10-jamstack-cms-for-2020-19dd</link>
      <guid>https://dev.to/krofax/top-10-jamstack-cms-for-2020-19dd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Google&lt;/strong&gt; has been improving its Javascript crawling and rendering capabilities. This has influenced more and more developers to experiment with the JAMstack architecture to build faster, less bloated websites that please both search engines and visitors.&lt;/p&gt;

&lt;p&gt;Also, as search engines prioritize speed as one of their top ranking factors, static, pre-rendered websites, like those you can build using a JAMstack CMS are emerging as one of the main tools in a modern developer’s toolbox.  &lt;/p&gt;

&lt;p&gt;In a previous article, we highlighted  &lt;a href="https://agilitycms.com/resources/posts/top-jamstack-pioneers"&gt;some of the pioneers in the JAMstack&lt;/a&gt;  ecosystem and the opportunities JAMstack brings for both  &lt;a href="https://agilitycms.com/product/developers/"&gt;developers &lt;/a&gt; and &lt;a href="https://agilitycms.com/resources/posts/what-is-jamstack-and-why-should-you-care-as-an-editor/"&gt;marketers&lt;/a&gt;. In this one, we will talk about ten JAMstack-ready CMSs worth looking at as you plan for 2021 and beyond.  &lt;/p&gt;

&lt;h1&gt;
  
  
  Headless CMS 101
&lt;/h1&gt;

&lt;p&gt;The headless CMS architecture is gaining momentum in the development world, and it’s not a surprise why. A headless CMS enables developers and marketers to build better digital experiences faster, and at a fraction of the cost. &lt;/p&gt;

&lt;p&gt;Headless CMSs take a different approach to web development when compared to traditional CMSs. In general, headless CMSs care about the data first and the design second, which means that all the content you add to the CMS exists independently from the website in data structures connected by APIs. These APIs drive and deliver content to any channel and device, which makes headless CMSs the go-to architecture for companies and brands looking to deliver omnichannel experiences. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read More:&lt;/strong&gt;  &lt;a href="https://agilitycms.com/resources/posts/why-is-a-headless-cms-architecture-so-popular"&gt;Why is a Headless CMS Architecture so Popular?&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Why JAMstack?
&lt;/h1&gt;

&lt;p&gt;The JAMstack architecture gives developers a new way of developing software that leverages static rendering at the client-side. By rendering the content in the browser, static websites can access a pre-rendered HTML file (cached ahead of time) to display content quicker. &lt;/p&gt;

&lt;p&gt;One of the main advantages of developing software in the JAMstack ecosystem is that each tool you use, each API you call, and the Javascript framework you build on, are connected and work in sync with each other. Therefore, you don’t have to juggle technologies and face compatibility issues when making a site.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read More:&lt;/strong&gt;  &lt;a href="https://agilitycms.com/resources/posts/the-meteoric-rise-of-jamstack"&gt;The Meteoric Rise of JAMstack&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Top 10 JAMstack CMSs
&lt;/h1&gt;

&lt;p&gt;JAMstack is all about giving frontend developers the tools to architect and build fast digital experiences. Also, when you add a JAMstack-ready CMS to the equation, you gain marketer friendliness, better editing options, increased functionalities, and community support. &lt;/p&gt;

&lt;p&gt;Let’s take a look at our top 10 picks of JAMstack CMS. &lt;/p&gt;

&lt;h2&gt;
  
  
  Agility CMS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://agilitycms.com/"&gt;Agility CMS&lt;/a&gt;&lt;/strong&gt;  puts content at the front and center of the development process. By taking a content-first approach, Agility CMS empowers users to build digital experiences faster than other JAMstack-ready CMSs in the market. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;On the JAMstack side of things, Agility is one of the few JAMstack headless CMSs with page management built-in, which allows developers to choose which properties the content editors will work with, simplifying content editing. Also, Agility CMS enables you to select any Javascript framework and set it up with static site generators like Gatsby and NextJS. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Agility CMS is best for content editors who want an omnichannel approach.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Strapi
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://strapi.io/"&gt;Strapi&lt;/a&gt;&lt;/strong&gt; is an open-source headless CMS based on Node.js. Strapi uses GraphQL to fetch and query data and deliver content across channels faster. Strapi offers users role-based access control, a substantial media library, and a pleasing UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;When it comes to JAMstack development, Strapi integrates seamlessly with most static site generators on the market, enabling developers to create all kinds of digital content that can be extended using plugins.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Strapi is good for front-end developers with Javascript skills. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Contentful
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.contentful.com/"&gt;Contentful&lt;/a&gt;&lt;/strong&gt; shuns templates and fixed content structures aside, giving developers the tools to organize and structure the content their way. Contentful focuses on providing users with the tools to build custom content models for maximum customization. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;One of the most stable features of Contentful for JAMstack developers is that the CMS is built on a solid CDN. Content is closely tied to JSON, which means that it delivers content in markup format ready to be consumed by static site generators and different channels for a true omnichannel strategy. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Contentful is good for developers familiar with HTTP requests and JSON responses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  DatoCMS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.datocms.com/"&gt;DatoCMS&lt;/a&gt;&lt;/strong&gt; offers users enhanced digital asset management using AI-powered content tagging and improved search capabilities. Dato also comes with a powerful image editor that enables the manipulation of content on the fly. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;From a JAMstack perspective, DatoCMS gives developers the ability to create tree-like data structures with ease and simplify content editing. DatoCMS also helps users decide how the administrative area looks, so the platform looks clearer for everyone. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DatoCMS is good for image-rich websites that need specific roles and permissions systems. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Prismic
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://prismic.io/"&gt;Prismic&lt;/a&gt;&lt;/strong&gt; enables users to build all kinds of digital experiences. From wikis to blog posts to marketing pages and web applications, Prismic delivers content that can be previewed in build time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;From a JAMstack perspective, what makes Prismic a contender is how they use content slices to define dynamic content zones within a page, giving editors the freedom to compose experiences the way they need. Also, the fact that they include out-of-the-box content localization makes them a reliable JAMstack-ready CMS. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Prismic is good for creating and editing multilanguage sites. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Contentstack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.contentstack.com/"&gt;Contentstack&lt;/a&gt;&lt;/strong&gt; empowers non-technical users to create and optimize omnichannel content experiences while also giving developers the tools to build robust frontend systems to distribute this content across devices and platforms. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;Contentstack is another strong contender to consider when it comes to JAMstack CMSs. Contentstack gives users robust content modeling capabilities and enables seamless integration with static site generators to create all kinds of digital experiences in almost no time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Contentstack is good for projects with custom content models or complex page structures.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Netlify
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt;&lt;/strong&gt; is a tech-agnostic tool that automates the build and deployment process of websites and applications. Netlify simplifies the process and automatically deploys the changes to its custom CDN, which means that all you need to make it work is your frontend tool of choice and a git repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;Since it was its founder who coined the term JAMstack, there wouldn’t be a JAMstack ecosystem without the tool. All sites built on Netlify are prebuilt, which means that they load faster and are deployed directly to a global edge network without users having to do anything different than their regular workflow. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Netlify is good for developers who need to build and deploy production sites quickly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Cosmic
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cosmicjs.com/"&gt;Cosmic&lt;/a&gt;&lt;/strong&gt; is a cross-compatible, extensible headless CMS that integrates JAMstack capabilities and gives developers starters to simplify development and cut production times. Cosmic offers users dozens of templates to build everything they need, from a simple portfolio site to Android apps. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;Cosmic has a vibrant user community that gives users a place where they can learn from each other and use that knowledge to enrich their digital experiences and the platforms they build. Similarly, Cosmic allows users to upload their own starters, adding to the pool of templates they offer to new users.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cosmic is good for users who need a reliable website starter.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Directus
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://directus.io/"&gt;Directus&lt;/a&gt;&lt;/strong&gt; enables users to manage content and digital experiences by connecting SQL databases and deploying the data using an intuitive platform that also caters to non-technical users in an unrestricted environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;Directus is an open-source, database-first CMS that enables users to connect different SQL databases using APIs. Also, Directus leverages JSON markup language to give users complete control of how the content is produced, deployed, and consumed. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Directus is good for users who need extensive SQL support. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Sanity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.sanity.io/"&gt;Sanity&lt;/a&gt;&lt;/strong&gt; allows users to edit structured content in an open-source platform that can be quickly customized with Javascript, enabling users to use the JAMstack architecture and build digital experiences using any Javascript framework. With Sanity, editors can alter structured content and use it as regular data with ease. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;From a JAMstack perspective, Sanity is a reliable choice as it enables users to distribute content from a single source of truth, approach workflow, and design programmatically, and query images for metadata, enabling better content tagging and enhanced integrations with any DAM.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sanity is good for teams using markup languages and structured content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  So, What’s The Best JAMstack CMS?
&lt;/h2&gt;

&lt;p&gt;The truth is that while most JAMstack CMSs are similar, they’re built with specific capabilities and use cases in mind. Some are made with developers in mind and others, like Agility CMS, are built to cater to both developers and editors, giving users the best of both worlds. &lt;/p&gt;

&lt;p&gt;What constitutes the best JAMstack CMS varies from one company to the other, but regardless of which CMS you choose, you need to have a clear understanding of your priorities and where your business is heading in order to reap the benefits of the JAMstack architecture. &lt;/p&gt;

&lt;p&gt;If you have doubts on how the JAMstack architecture can help you become more agile, watch this webinar &lt;a href="https://agilitycms.com/resources/posts/using-jamstack-with-agilitycms"&gt;Using JAMstack with Agility CMS&lt;/a&gt; or  &lt;a href="https://youtu.be/8vbDWKqt4Eg"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cms</category>
      <category>headlesscms</category>
      <category>javascript</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Creating Desktop Apps with ReactJS using Tauri</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Thu, 30 Jul 2020 16:26:30 +0000</pubDate>
      <link>https://dev.to/krofax/creating-desktop-apps-with-reactjs-using-tauri-af</link>
      <guid>https://dev.to/krofax/creating-desktop-apps-with-reactjs-using-tauri-af</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Building desktop apps use to be difficult, first, you would need to know quite a number of languages like Java or C++ and get buried to quite a number of setups which can be wearing. Thankfully as technology progressed, frameworks like ElectronJS came into the picture and simplified the process.&lt;br&gt;
In this article, I’ll introduce you to Tauri, A toolchain for building native desktop apps using any HTML and JavaScript-based front-end framework, such as React, Vue.js, or Angular. &lt;/p&gt;

&lt;p&gt;This article will be useful to you if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you’ve been building a web or mobile application and want to see how you could create a desktop app with React.Js.&lt;/li&gt;
&lt;li&gt;you have been building applications on the web with HTML, CSS, and JavaScript, and you want to use the same technologies to create apps targeted at Windows, macOS, or Linux platforms.&lt;/li&gt;
&lt;li&gt;you are already building cross-platform desktop apps with technologies like Electron, and you want to check out alternatives.&lt;/li&gt;
&lt;li&gt;you are a Rust enthusiast, and you’d like to apply it to build native cross-platform applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will look at how to build a native cross-platform application from an existing web project. Let’s get to it!&lt;br&gt;
Note: This article assumes you’re comfortable with HTML, CSS, and React.Js.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Tauri.js?
&lt;/h2&gt;

&lt;p&gt;The Official Tauri site describes it as;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A framework for building tiny, blazing-fast binaries for all major desktop platforms. &lt;/li&gt;
&lt;li&gt;It allows a rust-sourced binary with an API that the front-end can interact with.&lt;/li&gt;
&lt;li&gt;Built with Rust and the CLI leverages Node.js, hence making Tauri a genuinely polyglot approach to creating and maintaining great apps. Polyglot in this context means that Tauri uses multiple programming languages such as Rust, JavaScript, and TypeScript.&lt;/li&gt;
&lt;li&gt;A Framework-agnostic toolchain for building highly secure native apps that have tiny binaries (i.e. file size) and that are very fast (i.e. minimal RAM usage).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simply put, Tauri makes you utilize web technologies to create smaller and secured native desktop apps.&lt;/p&gt;
&lt;h2&gt;
  
  
  Electron Vs Tauri: Their differences
&lt;/h2&gt;

&lt;p&gt;Electron Js has been around for a while now and as even made mass adoption amongst developers and great companies like Atom, Vscode, and more. In this section, we would compare some features that make Tauri distinct from Electron Js.&lt;br&gt;
This table is from it’s Github page.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Features&lt;/th&gt;
&lt;th&gt;Tauri&lt;/th&gt;
&lt;th&gt;Electron&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Binary Size MacOS&lt;/td&gt;
&lt;td&gt;0.6 MB&lt;/td&gt;
&lt;td&gt;47.7 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory Consumption MacOS&lt;/td&gt;
&lt;td&gt;13 MB&lt;/td&gt;
&lt;td&gt;34.1 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interface Service Provider&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;Chromium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend Binding&lt;/td&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;Node.js (ECMAScript)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Underlying Engine&lt;/td&gt;
&lt;td&gt;C/C++&lt;/td&gt;
&lt;td&gt;V8 (C/C++)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLOSS&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multithreading&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bytecode Delivery&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can Render PDF&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple Windows&lt;/td&gt;
&lt;td&gt;Soon&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto Updater&lt;/td&gt;
&lt;td&gt;Soon&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Platform&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom App Icon&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows Binary&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MacOS Binary&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux Binary&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iOS Binary&lt;/td&gt;
&lt;td&gt;Soon&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android Binary&lt;/td&gt;
&lt;td&gt;Soon&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Localhost Server&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No localhost option&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Desktop Tray&lt;/td&gt;
&lt;td&gt;Soon&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Splashscreen&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sidecar Binaries&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We see from the above table that despite the fact that Tauri is pretty new it has some amazing features and even more, while others are in the pipeline. &lt;/p&gt;
&lt;h2&gt;
  
  
  Benefits of Tauri
&lt;/h2&gt;

&lt;p&gt;The following are the reason you might want to consider using Tauri in your next Desktop app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s compatible with any JavaScript framework, hence you don’t have to change your stack.&lt;/li&gt;
&lt;li&gt;Its variety of design patterns makes it possible to get started with implementing features with easy configurations.&lt;/li&gt;
&lt;li&gt;Like you saw from the above table, the size of a Tauri app is just 0.60 MB (600 KB).&lt;/li&gt;
&lt;li&gt;Also, the memory consumption of a Tauri app is less than half of an Electron-based app. From the table, it is usually about 13 MB.&lt;/li&gt;
&lt;li&gt;Unlike Electron, relicensing is made possible with Tauri. Apps built with Tauri can be officially shipped into PureOS.&lt;/li&gt;
&lt;li&gt;The flexibility and framework agnostic ability of Tauri makes it possible to turn a web-based code-base into a native desktop app, without altering anything.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Tauri in Action!
&lt;/h2&gt;

&lt;p&gt;Tauri uses Node.js under the hood to scaffold an HTML, CSS, and JavaScript rendering window as a user interface (UI), majorly bootstrapped by Rust. &lt;br&gt;
The outcome is a monolithic binary that can be distributed as common file types for macOS (app/dmg), Windows (exe/MSI), and Linux (deb/app image).&lt;/p&gt;
&lt;h2&gt;
  
  
  How Tauri Apps Are Made
&lt;/h2&gt;

&lt;p&gt;A Tauri app is created via the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, make an interface in your GUI framework, and prepare the HTML, CSS, and JavaScript for consumption.&lt;/li&gt;
&lt;li&gt;The Tauri CLI takes it and rigs the underlying native code(Rust runner) according to your configuration.&lt;/li&gt;
&lt;li&gt;In development mode, it creates a WebView window, with debugging and Hot Module Reloading.&lt;/li&gt;
&lt;li&gt;In build mode, it rigs the bundler and creates a final application(native installers) according to your settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out more of its operation on Its site.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting Up Your Environment
&lt;/h2&gt;

&lt;p&gt;Now that you know what Tauri is and how it works, let’s do the setups.&lt;br&gt;
We will not be covering environment setups for any OS in this tutorials, but you can check the setup for Windows, macOS, and Linus are also available, &lt;br&gt;
For those using the Windows Subsystem for Linux (WSL) please refer to it’s Linux specific instructions instead.&lt;/p&gt;

&lt;p&gt;Implementing Tauri With React.JS&lt;/p&gt;

&lt;p&gt;Now that we have Tauri installed, let’s bundle an existing web project. &lt;br&gt;
For this application, we would be using a Money Heist Episode Picker I built with React and Typescript. Read how I built it here. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/money-heist-episode-picker-react-and-typescript-web-app-px1qe" rel="noopener noreferrer"&gt;https://codesandbox.io/s/money-heist-episode-picker-react-and-typescript-web-app-px1qe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go ahead and fork the repository, which will serve as a shell. After forking it, make sure to clone the fork by running this:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/[yourUserName]/React-Desktop-App.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;You can install Tauri as both a local and a global dependency, but in this tutorial, we’ll be installing it locally.&lt;br&gt;
After cloning the project, run the following to install the dependencies:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Using npm
npm install

#using yarn
yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;After a successful installation of dependencies, start the server with &lt;code&gt;npm start&lt;/code&gt;, your app should start on &lt;code&gt;http://localhost:3000&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Defining Tauri
&lt;/h2&gt;

&lt;p&gt;If you decide to use Tauri as a local package with npm, you will have to define a custom script to your package.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    {
      // Add Tauri to the script object
      "scripts": {
        "tauri": "tauri",
        "dev": "npm run tauri dev",
        "bundle": "tauri build",
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Tauri command - defines Tauri and tells your OS, you’re about to create a Tauri based app.&lt;/li&gt;
&lt;li&gt;dev - It enables us to start your app on our local machine.&lt;/li&gt;
&lt;li&gt;bundle - Running this command will build our app for production.
Initialize Tauri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will need to add an &lt;code&gt;src-Tauri&lt;/code&gt; directory to the root of your app directory. Inside this directory are files and folders used by Tauri to configure your desktop app. &lt;br&gt;
To initialize Tauri in other for us to have this folder, run;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`npm run Tauri init`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;While initializing you’ll be asked a few questions, answers them based on your project scope.&lt;br&gt;
Here’s how mine looks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_1DF6BD7ACDB365DB71B2F3AE3D0725560E45DBE5BFA761B8468140029F43583B_1595333669098_Screenshot%2B161.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_1DF6BD7ACDB365DB71B2F3AE3D0725560E45DBE5BFA761B8468140029F43583B_1595333669098_Screenshot%2B161.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After it’s done initializing, it will create a &lt;code&gt;src-tauri&lt;/code&gt; directory, let’s check out the contents:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;└── src-tauri
    ├── .gitignore
    ├── Cargo.toml
    ├── rustfmt.toml
    ├── tauri.conf.json
    ├── icons
    │   ├── 128x128.png
    │   ├── 128x128@2x.png
    │   ├── 32x32.png
    │   ├── icon.icns
    │   ├── icon.ico
    │   └── icon.png
    └── src
        ├── build.rs
        ├── cmd.rs
        └── main.rs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;Cargo.toml&lt;/code&gt; inside &lt;code&gt;src-tauri/Cargo.toml&lt;/code&gt; is like the &lt;code&gt;package.json&lt;/code&gt; file for Rust. &lt;br&gt;
 It contains configurations for our app. The content of this file is beyond the scope of this tutorial.&lt;/p&gt;

&lt;p&gt;##Bundling our app&lt;/p&gt;

&lt;p&gt;To bundle &lt;code&gt;Money-Heist&lt;/code&gt; for your current platform, simply run this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#builds our react app
npm run build

#builds the Tauri crates
npm run bundle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The first time you run this, it will take some time to collect the Rust crates and build everything, but on subsequent runs, it will only need to rebuild the Tauri crates which is much quicker.&lt;br&gt;
So go grab some chocolates while it’s building 😎&lt;/p&gt;

&lt;p&gt;When the above is completed, you should have a binary of &lt;code&gt;money-heist&lt;/code&gt; for your current OS. &lt;br&gt;
Because of the way that Cargo builds its targets, the final app is placed in the following folder:&lt;br&gt;
&lt;code&gt;src-Tauri/target/release/money-heist&lt;/code&gt;. &lt;br&gt;
Your’s might be &lt;code&gt;src-tauri/target/release/bundle/[your-app]&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article we have seen how cool it is to build desktop apps with React utilizing Tauri, I’d like to see what you came up with the comment section.&lt;br&gt;
Lemme know what you think about Tauri.&lt;br&gt;
If you enjoyed the article please let’s connect on &lt;a href="https://twitter.com/beveloper" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://agilitycms.com/resources/posts/why-you-as-a-developer-should-be-using-a-cms" rel="noopener noreferrer"&gt;Why You as a Developer Should be Using a CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/headless-commerce-explained-definitions-use-cases-and-roadblocks" rel="noopener noreferrer"&gt;Headless Commerce Explained: Definitions, Use Cases, and Roadblocks | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/apis-vs-sdks-what-s-the-difference" rel="noopener noreferrer"&gt;APIs vs. SDKs: What's the Difference? | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/static-site-generators" rel="noopener noreferrer"&gt;TOP Static Site Generators to Watch in 2021&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/what-s-the-difference-between-headless-cms-and-static-site-generator/" rel="noopener noreferrer"&gt;Difference between Headless CMS and static site generator&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/what-is-netlify-and-why-should-you-care-as-an-editor" rel="noopener noreferrer"&gt;What is Netlify and Why Should You Care as an Editor? | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/guide/what-is-a-headless-cms" rel="noopener noreferrer"&gt;What is a Headless CMS? | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/guide/top-10-reasons-why-you-should-choose-a-headless-cms-over-a-traditional-cms" rel="noopener noreferrer"&gt;Benefits of Headless CMS vs a Traditional CMS | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/content-architecture" rel="noopener noreferrer"&gt;Content Architecture: The Key to Organizing and Managing Your Content and Team&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/wordpress-vs-agility-cms" rel="noopener noreferrer"&gt;WordPress And Its Alternatives: Headless CMS | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/whitepaper/proprietary-vs-open-source-content-management-systems" rel="noopener noreferrer"&gt;Open Source CMS vs. Proprietary CMS: Can You Have the Best of Both? | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/react-cms" rel="noopener noreferrer"&gt;Choosing a React CMS: What to Look For? | Agility CMS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/content-modelling" rel="noopener noreferrer"&gt;Take control of your Content Architecture: Content Modelling&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/the-benefits-of-a-hybrid-dxp" rel="noopener noreferrer"&gt;DXP vs Headless CMS: Modern DXP Architecture&lt;/a&gt;&lt;br&gt;
&lt;a href="https://agilitycms.com/resources/posts/top-jamstack-pioneers" rel="noopener noreferrer"&gt;Jamstack Development: 10 JAMstack Pioneers You Need To Know About in 2021&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding Webhooks in Headless CMS</title>
      <dc:creator>Blessing Krofegha</dc:creator>
      <pubDate>Thu, 30 Jul 2020 12:27:23 +0000</pubDate>
      <link>https://dev.to/krofax/understanding-webhooks-in-headless-cms-2e1d</link>
      <guid>https://dev.to/krofax/understanding-webhooks-in-headless-cms-2e1d</guid>
      <description>&lt;p&gt;Modern development has transformed communication in numerous ways. As things evolve, the desire to communicate effectively with people sets.&lt;/p&gt;

&lt;p&gt;To attain such a communication demand we need, we need to find a way to make technologies talk to each other.&lt;br&gt;
That’s where webhooks come into the picture.&lt;br&gt;
Getting webhooks set up in a Headless CMS is much easier, faster, and cost-effective compared to setting it up via API approach.&lt;/p&gt;

&lt;p&gt;In this article, we would look at how we could set up webhooks using Agility CMS, a Headless CMS that's is supercharged with JAMstack. It integrates seamlessly with modern, blazing-fast website frameworks and enables high-performance digital experiences.&lt;/p&gt;

&lt;p&gt;This article will be useful for you if;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;you know the differences between an API and a Webhook, otherwise, check this 4 mins  &lt;a href="https://agilitycms.com/resources/posts/-api-vs-webhooks-what-s-the-difference/" rel="noopener noreferrer"&gt;piece&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you have built real-time applications that deliver data as an event happens or immediately using API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you are already building webhooks with 3rd party applications, and you want to check out alternatives.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will look at how to build a real-time, event-based simple app using Webhooks in Agility CMS.&lt;br&gt;
Let's get to it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This article assumes you're comfortable with the basics of Node.Js.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is WebHooks?
&lt;/h2&gt;

&lt;p&gt;Webhooks are automated messages that are sent each time an event happens. They have one unique mission: transmitting a message or data to a unique address or URL. Is a way for an app to provide other applications with real-time information. It delivers data as an event happens or almost immediately.&lt;/p&gt;
&lt;h2&gt;
  
  
  When to Use Webhooks
&lt;/h2&gt;

&lt;p&gt;Webhooks usually acts as a messenger for smaller data. It helps to send and extracting real-time updates.&lt;/p&gt;

&lt;p&gt;One of the most suitable scenarios for using a webhook is when your app or platform requires a real-time feature and you don't want to use an API, because you don't want to get entangled with the setups and waste resources in the process. In such instances, a webhook framework will be most beneficial.&lt;/p&gt;

&lt;p&gt;Another best use case for using a webhook is where an API isn't provided or the available API isn't best fit to act, a webhook could be used instead in such a situation.&lt;/p&gt;

&lt;p&gt;Webhooks can be regarded as a perfect, and sometimes even essential complement to API-based application integration.&lt;/p&gt;

&lt;p&gt;This can be used to set up notification workflows in Slack, automatically redeploy static websites to Netlify, as well as a variety of other automation use cases.&lt;/p&gt;
&lt;h2&gt;
  
  
  Benefits of Webhooks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It helps for clearing and managing a custom cache in an external system such as a website, mobile application, or database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It provides a way to sync content/data for integrations with third-party systems (i.e. Salesforce, Mailchimp, etc).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It helps when building custom content workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kick-off a CI/D pipeline to redeploy your website when content has been updated is possible with webhooks- this is often used for JAMstack sites that are built using static site generators.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using webhooks in a Headless CMS(Agility CMS)
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we will see how to integrate webhooks in a headless CMS, and our choice would be Agility CMS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agilitycms.com/" rel="noopener noreferrer"&gt;Agility CMS&lt;/a&gt;  is a JAMStack focused Headless CMS with Page Management built-in. Faster to build, manage, and deploy. Agility CMS is a Content-First Headless CMS, allowing you to choose any programming language while also getting the flexibility, speed, and power that comes from lightweight APIs. From there, you could add features like Page Management, Ecommerce, Online Ticketing, and Search. Agility CMS becomes a complete Digital Experience Platform–saving time, removing limitations, and allowing for seamless experiences across all digital channels.&lt;/p&gt;
&lt;h2&gt;
  
  
  Implementing Webhooks with Agility CMS
&lt;/h2&gt;

&lt;p&gt;This works by providing a list or URL endpoints to Agility CMS. Each time content changes in the CMS, Agility will notify each endpoint of the change and pass-on a message representing the exact change that occurred.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Add a Webhook Endpoint
&lt;/h2&gt;

&lt;p&gt;In order to add a webhook, you must have access to an Agility CMS instance with Content Fetch API enabled. To get started signup for free on Agility CMS.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
Next, In Agility CMS, navigate to &lt;strong&gt;Settings &amp;gt; Customization/Development &amp;gt; Webhooks.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110009768%2FhuyVTaEbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110009768%2FhuyVTaEbm.png" alt="0_DkwOYRLToyPdhWNL.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
Click Add (+) to add a webhook endpoint.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110098258%2FhV9YLMzqT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110098258%2FhV9YLMzqT.png" alt="0_yvAt81D_ctOro3KG.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
Add your endpoint here&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110150865%2F2ws0EZYh2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110150865%2F2ws0EZYh2.png" alt="0_0LWd6bLIadu8mYKV.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;Webhook&lt;/strong&gt; details flyout, enter the &lt;strong&gt;Url&lt;/strong&gt; endpoint that you want to send events to.&lt;/p&gt;

&lt;p&gt;For testing, we recommend using a free service such as  &lt;a href="https://requestbin.com" rel="noopener noreferrer"&gt;requestbin &lt;/a&gt; which allows you to set up an endpoint and monitor the messages that get sent there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110254525%2FIImvlVQ1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110254525%2FIImvlVQ1f.png" alt="0_VHmRABw7RRuca87d.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After signing up/logging into their service, we get a Url we can use.&lt;br&gt;
Image for post&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110297649%2F0BQka09LZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110297649%2F0BQka09LZ.png" alt="0_zGgXf6ab05gQFLm0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, select what type of Events this webhook should be subscribed to. You can optionally subscribe to all events (Publishes, Workflow Approvals, and Content Saves) or select only the type(s) you need.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Copy the &lt;strong&gt;URL **given to you and paste it in your **Agility&lt;/strong&gt; Instance webhook page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110443520%2FZAgUEYc-s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110443520%2FZAgUEYc-s.png" alt="0_HU23a22E1XY1Kn-W (1).png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are ready, click the &lt;strong&gt;Send Test Payload&lt;/strong&gt; button to test your webhook endpoint. This will generate a sample request to your defined endpoint **Url **and log the result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110504820%2F1534lT5wM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110504820%2F1534lT5wM.png" alt="0_STOkDHNIS0UXRZCy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you created a request bin endpoint, you can verify the payload that was sent there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110550550%2FtXcHRO_xM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1596110550550%2FtXcHRO_xM.png" alt="0_6zzIh8LuLuSwPkOI.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;****When ready, click Save to save your webhook.&lt;/p&gt;
&lt;h3&gt;
  
  
  Payload Details
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Page Events&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;On Save:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"state": "Saved",
"instanceGuid": "0000-0000-0000-0000",
"languageCode": "en-us",
"referenceName": "reference-name",
"contentID": 1,
"contentVersionID": 2,
"pageID": 3,
"pageVersionID": 4
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;On Publish:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Content Events&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"state": "Published",
"instanceGuid": "0000-0000-0000-0000",
"languageCode": "en-us",
"referenceName": "reference-name",
"contentID": 1,
"contentVersionID": 2,
"pageID": 3,
"pageVersionID": 4
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;On Save:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"state": "Saved",
"instanceGuid": "0000-0000-0000-0000",
"languageCode": "en-us",
"referenceName": "post",
"contentID": 1,
"contentVersionID": 2,
"pageID": 3,
"pageVersionID": 4
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;On Publish:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"state": "Published",
"instanceGuid": "0000-0000-0000-0000",
"languageCode": "en-us",
"referenceName": "post",
"contentID": 1,
"contentVersionID": 2,
"pageID": 3,
"pageVersionID": 4
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we have seen how to seamlessly integrate webhooks in a Headless CMS using Agility CMS. You’d agree with me that it’s far much simpler compared to if you were using an API.&lt;br&gt;
I’d like to see what you come up with within the comment section, perhaps you’d prefer some another approach and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://agilitycms.com/resources/posts/-api-vs-webhooks-what-s-the-difference/" rel="noopener noreferrer"&gt;API vs WEBHOOKS: What’s the difference&lt;/a&gt;  — Agility CMS&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>node</category>
    </item>
  </channel>
</rss>
