Picking your tech stack - Canonic vs Strapi
Published: 2021-09-28 13:01:09

## Introduction

Canonic and Strapi are often compared as direct competitors. However, the two are quite different in terms of intended usage & audience. This article aims to highlight these differences from an unbiased perspective and help *you choose* the perfect tool for *your particular use case.*

![1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0ffwvjhir6dw6t4z6o0.jpg)

Strapi positions itself as a developer first open-source headless CMS platform; essentially trying to make content management & subsequent development faster and easier. Canonic, on the other hand, positions itself as a low-code backend development platform trying to take care of all your backend requirements in a single place. The two platforms are, therefore, positioned differently which should give you a clear indication of the requirement each platform is trying to fulfil.

-----------

## Pre Requisites

### Strapi requires certain softwares to be pre-installed.

Strapi requires three softwares to be pre-installed on your computer before you can use the platform. These are Node.js, Npm/Yarn and a database (SQLite, PostgreSQL, MySQL, etc). As Strapi is "developer-first", these softwares do have a certain learning curve to them (if you're not a developer) on top of the minimal learning curve of the platform itself. However, the well maintained Docs section or [these video tutorials](https://www.youtube.com/watch?v=yH6cQRRWNFI) can help you get started in no time.

Post the installation of the pre-requisites, you can get your Strapi Dashboard up and running!

![2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6im9uktqlxi1w6jsal01.png)


### Canonic requires no pre-requisites.

Canonic does not have any pre-requisites. Since **Canonic is a web app**, it can be accessed through any internet browser, removing the need to switch between applications. Everything created on the platform remains on the platform itself; therefore making it a complete backend development tool. 

 The only learning curve here is of the platform itself which can be navigated through by reading the documentation or completing the onboarding. 

![3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mgzsxvo4sbx61b3ew9r0.png)
 

Canonic dashboard.

For anyone without substantial development experience, Strapi might be a little overwhelming to get started with, in comparison to Canonic. However, if you are a fully-fledged developer, there is a good chance that you already have the Strapi pre-requisites installed on your computer and can get your project up & running in no time. 

---

## Hosting & Security

### Strapi projects are self-hosted.

Strapi projects are self-hosted which means that the data is hosted on your computer or your server(s). They do have a Cloud Server functionality coming soon; the dates of which haven't yet been released. 
Due to the projects being self-hosted, there lies a hidden pre-requisite to use Strapi in terms of DevOps / deployment experience as well as the knowledge of hosting your server. 

### Canonic projects are serverless backends.

Canonic, on the other hand, is a cloud-based platform with a server-less architecture. The projects are serverless backends securely hosted on the AWS platform and your data is securely saved on your database; reducing the risk of losing data and allowing you to scale without worrying about the stability (in case of higher traffic or other such cases). 
There is no hidden requirement of DevOps experience to use Canonic.

---

## Platform

Both platforms utilise graphical interfaces. However, due to the differences in product orientation, the way data is represented varies immensely. 

### Strapi uses a list-based view to make content management faster.

Strapi uses a list-based view to show the CMS collection types (essentially folders or elements of your database). This is helpful while maintaining a large number of entries as Strapi is more focused on content management as a platform.

![4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cvgyqssogdza4bu2uzo4.png)
 

### Canonic uses a graphical node-based representation for your database.

Canonic, on the other hand, differs completely. It uses a graph-like view to help see your database structure more clearly. With each table having separate nodes for fields, one can see the entire data structure in a single glance.

![5](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vz31vqrl808bzgronkef.png)
 

Therefore, a database with many fields of varying field types becomes faster to identify on Canonic as it is inherently a visual interface. The same can become a little difficult on Strapi.

An instance of this is to see what fields in a table are of the "linked" type in a database. Visual interfaces can afford signifiers, which in this case, Canonic provides with the help of a dotted line to signify a linked table. Therefore, time to locate specific fields is reduced on Canonic's visual interface while the same can become a little tedious on Strapi. 

![6](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7p113mya2prxp956u9z.png)
 

Linked table types (or Relational Fields on Strapi).

![7](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0zaz1bsvskiet8rowdy.png)
 

Linked field types on Canonic on the graph-view use a dotted line and show what table the field is linked to. 

---

## APIs

Both platforms offer auto-generated CRUD APIs with the added functionality of adding custom-coded business logic and creating your own APIs. However, here is where a major difference lies between both platforms. 

### Strapi uses a plugin to view APIs and is editable through your code editor.

Strapi provides you with a list of APIs by using a plugin built into the platform called Swagger. Since Strapi is developer-first, any modification/creation of APIs has to be done via your code editor. To aid this process, Strapi autogenerates folders inside your preferred code editor where you can meddle around with the APIs. 

The APIs documented on Swagger show up like this: 

![8](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ymhnhmxhhqbyilavzj2q.png)
 

API List on Swagger.

The APIs are then incorporated inside your code editor, as shown below:

![9](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q8sr8b6tsongdrrdzwdv.png)
 

Strapi autogenerates folders directly inside your code editor.

### Canonic allows you to create/modify APIs all in one place.

Canonic works a little differently. Even though the platform has an [SDK](https://canonic.dev/features/sdk?utm_campaign=canonicvsstrapi) to integrate your project directly into your code editor, the true power of the platform lies in the platform itself. Canonic is essentially a one-stop platform for all backend requirements. Your database, CMS, APIs and documentation exists in one place: on the Canonic web app.

Each API and subsequent trigger/webhook is seen as an endpoint, again in a similar node-like structure. This makes it easy to see webhooks and APIs in logic blocks. However, this preference can be quite subjective. 

![10](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbdugfmy7b8mopn1drrs.png)
 

---

The documentation for the APIs exist on the platform itself, as shown below in the screenshot: 



Another point to highlight is that Canonic allows you to create complex workflows straight from the platform itself which you would otherwise have to write in code on Strapi or other headless CMS platforms. 

Therefore, the difference between the platforms also lies in the requirement of DevOps experience. While Strapi requires you to build out your APIs inside your code editor, Canonic allows you to do the same on the platform itself along with the added functionality of creating complex workflows and triggers; all on a visual interface. Custom business logic has to be written in code for both platforms. 
![11](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nokdofr2sn5bdj6cg93m.png)
 
## Pricing

Both platforms feature a free forever plan along with several paid options. However, because of the difference in functionality and what each platform has to offer, there are differences in pricing options. 

### Strapi is an open-source platform and has a "free forever" plan.

Strapi's free forever plan allows you to have a self-hosted Strapi project with unlimited CMS entries and API Calls with 3 default roles. The paid plans offer features to scale up your project with more custom roles and support.

![12](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qj77rn6ff9cv0wokeyrk.png)
 
### Canonic features a freemium plan.

Canonic's free plan allows you to create 3 projects with one additional collaborator and 5000 requests a day. Paid pricing plans allow more API calls and CMS entries.

![13](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wufhhrb1psnzu2sxxmiq.png) 

---

## Conclusion

Based on the points above, it becomes evident that Canonic and Strapi are quite different in terms of positioning and what they're striving to do.

If you are a developer with knowledge about backend systems and DevOps, Strapi integrates into your workflow more easily. It sits inside your code editor; leaving you to dabble between your Strapi CMS and frontend framework straight from your code editor. 

With Canonic, your entire backend system is in one single place complete with your database, CMS, APIs and documentation. This can be created regardless of development experience, making it a better choice for people who lack the knowledge or resources required to create a backend. While Canonic also allows you to use SDKs and incorporate your project with your frontend framework, the true power of the platform lies in the relative ease and rapid speed with which you can make a backend on the Canonic web app.

The next major point of differentiation is hosting. Strapi allows you to self-host your project which means that the data is only with you (your server) and not on any other place on the internet. Canonic, on the other hand, hosts your backend for you and you can even select the region of deployment. Therefore, API response time is faster and the risk of losing your data becomes next to impossible. A serverless backend also removes the hindrance of unstable systems as you scale up your backend, accommodating higher API calls and CMS entries.

Finally, the preference of Strapi over Canonic or vice-versa largely depends on your specific use case. If you are looking for a developer-first content management tool, look no further than Strapi. However, if you're looking for a fully-fledged low-code backend development tool, regardless of your development experience, Canonic might be a better fit for you.

I hope this clarifies some of the confusion surrounding the similarity & differences between the two platforms. Let us know which one would you prefer and why in the comments below. Godspeed to your backends and you!

---