Draft:Strapi

Strapi
Strapi is an open-source, headless CMS (Content Management System) developed in JavaScript/TypeScript. It is maintained by the Strapi team and a community of individual developers and companies.

Since it is headless it can be used to build various types of applications because it does not generate any front-end by default but developers can utilise any front-end tool they want that can fetch data via REST or GraphQL API. Thanks to being open-source it can be also customised to fit its users needs.

The basic usage
The experience differs from traditional CMSs like Wordpress because since Strapi is headless it does not contain any content-types (posts, pages) by default. Users have to create their own content types with attributes based on their needs.

Once a content-type is created Strapi automatically generates CRUD (Create, Read, Update, Delete) endpoints to manage entities of it. For content managers a user interface to manage the content is available in the Strapi admin.

This decoupled architecture comes with a set of benefits like flexibility for front-end developers to pick any front-end framework they like, cross-platform and multichannel content delivery and faster load times but it also means it is not as easy to set up for non-technical users.

Notable features

 * Authentication

Strapi includes JWT-based authentication that is ready to be used. It includes endpoints for registration, login, password recovery and reset. Additionally, third party providers (Google, Facebook etc.) can be implemented.


 * Internationalisation

The internationalisation plugin, pre-installed in Strapi, enables content storage in multiple languages. When accessing the content via API the corresponding language mutation of a content can be retrieved by providing the locale parameter.


 * Back-end customization

Strapi automatically provides standard CRUD endpoints. Moreover, Strapi allows for custom endpoint creation to handle complex logic. To do this, a new route needs to be created and linked to a function (called a handler) that has been defined in the controllers folder. If a specific logic repeats among controllers it can be extracted into a service. Services can be called from any back-end part of Strapi.


 * Role-based access control

Since version 4.8. Role-based access control is available in the community edition allowing administrators to granularly restrict access to content-types and its fields by the role of the user. This ensures data safety and protection.

By default, 3 administrator roles are defined for any Strapi application - Author, Editor, Super Admin. Additional roles like Reviewer with customizable permissions can be created based on the project needs.


 * Plugins

The functionality of Strapi can be further extended by many open-source plugins that are available on the Strapi market. Some of them were built by the Strapi team but most were developed by the community.

For very specific use-cases custom plugins can be developed by anyone as the Strapi CLI includes features to generate a starter for a new plugin.

History
Strapi started as a School project by Jim Laurie, Pierre Burgy and Aurélien Georget but was first published on GitHub in 2015. In 2017 a company was incorporated in France and in 2017 V3 alpha was released.

In June 2018 Strapi had its first funding of 1 million USD (pre-seed round) and a year after that V3 Beta was released with another funding (seed round) following. First stable version was released in May 2020 accompanied by a series A funding round.

Important landmarks in the history of Strapi are also the release of V4 in October 2021, series B funding sized at 31 millions USD in July 2022 and introduction of the Strapi Cloud in February 2023.

Over the years of its existence It has quickly gained popularity gaining over 50 000 Github stars and has become used in many Global 500 companies.