What is @strapi/strapi?
@strapi/strapi is an open-source headless CMS (Content Management System) that provides a flexible and customizable way to manage content. It allows developers to create, manage, and distribute content across any device or platform. Strapi is built with Node.js and offers a powerful API, a user-friendly admin panel, and a plugin system to extend its functionalities.
What are @strapi/strapi's main functionalities?
Content Types Builder
Strapi allows you to define and manage different content types (e.g., articles, products, users) through its Content Types Builder. This feature provides a flexible way to structure your data models.
const { createCoreService } = require('@strapi/strapi').factories;
module.exports = createCoreService('api::article.article');
RESTful and GraphQL APIs
Strapi automatically generates RESTful and GraphQL APIs for your content types, enabling you to interact with your data through standard API endpoints.
const { createCoreController } = require('@strapi/strapi').factories;
module.exports = createCoreController('api::article.article');
Authentication and Permissions
Strapi includes built-in authentication and permissions management, allowing you to control access to your content and APIs based on user roles.
const { createCoreService } = require('@strapi/strapi').factories;
module.exports = createCoreService('api::user.user');
Plugin System
Strapi's plugin system allows you to extend its core functionalities by creating or installing plugins. This makes it easy to add new features or integrate with other services.
module.exports = {
register({ strapi }) {
// Register a new plugin
},
bootstrap({ strapi }) {
// Bootstrap the plugin
}
};
Admin Panel Customization
Strapi provides a customizable admin panel where you can manage your content, configure settings, and install plugins. You can also customize the admin panel to fit your specific needs.
module.exports = {
async bootstrap({ strapi }) {
// Customize the admin panel
}
};
Other packages similar to @strapi/strapi
keystone
KeystoneJS is another headless CMS and GraphQL API for Node.js. It offers a similar set of features, including a flexible content schema, an admin UI, and authentication. However, KeystoneJS is more focused on providing a GraphQL API and has a different approach to schema definition and customization.
directus
Directus is an open-source data platform that provides a headless CMS and API for managing content. It supports both RESTful and GraphQL APIs and offers a user-friendly admin interface. Directus is known for its flexibility and ability to work with existing SQL databases, making it a good alternative to Strapi.
contentful
Contentful is a cloud-based headless CMS that offers a robust API for managing and delivering content. It provides a user-friendly interface, powerful content modeling capabilities, and a wide range of integrations. Unlike Strapi, Contentful is a SaaS product, which means it is hosted and managed by Contentful, whereas Strapi is self-hosted.
sanity
Sanity is a headless CMS that offers real-time collaboration, a flexible content model, and a powerful API. It provides a customizable editing environment and supports both RESTful and GraphQL APIs. Sanity is known for its real-time capabilities and developer-friendly features, making it a strong competitor to Strapi.
Open-source headless CMS, self-hosted or Cloud you’re in control.
The leading open-source headless CMS, 100% JavaScript/TypeScript, flexible and fully customizable.
Cloud · Try live demo
Strapi Community Edition is a free and open-source headless CMS enabling you to manage any content, anywhere.
- Self-hosted or Cloud: You can host and scale Strapi projects the way you want. You can save time by deploying to Strapi Cloud or deploy to the hosting platform you want**: AWS, Azure, Google Cloud, DigitalOcean.
- Modern Admin Pane: Elegant, entirely customizable and a fully extensible admin panel.
- Multi-database support: You can choose the database you prefer: PostgreSQL, MySQL, MariaDB, and SQLite.
- Customizable: You can quickly build your logic by fully customizing APIs, routes, or plugins to fit your needs perfectly.
- Blazing Fast and Robust: Built on top of Node.js and TypeScript, Strapi delivers reliable and solid performance.
- Front-end Agnostic: Use any front-end framework (React, Next.js, Vue, Angular, etc.), mobile apps or even IoT.
- Secure by default: Reusable policies, CORS, CSP, P3P, Xframe, XSS, and more.
- Powerful CLI: Scaffold projects and APIs on the fly.
Getting Started
Read the Getting Started tutorial or follow the steps below:
⏳ Installation
Install Strapi with this Quickstart command to create a Strapi project instantly:
yarn create strapi-app my-project --quickstart
or
- (Use npm/npx to install the Strapi project.)
npx create-strapi-app my-project --quickstart
This command generates a brand new project with the default features (authentication, permissions, content management, content type builder & file upload). The Quickstart command installs Strapi using a SQLite database which is used for prototyping in development.
Enjoy 🎉
🖐 Requirements
Complete installation requirements can be found in the documentation under Installation Requirements.
Supported operating systems:
- Ubuntu LTS/Debian 9.x
- CentOS/RHEL 8
- macOS Mojave
- Windows 10
- Docker
(Please note that Strapi may work on other operating systems, but these are not tested nor officially supported at this time.)
Node:
Strapi only supports maintenance and LTS versions of Node.js. Please refer to the Node.js release schedule for more information. NPM versions installed by default with Node.js are supported. Generally it's recommended to use yarn over npm where possible.
Strapi Version | Recommended | Minimum |
---|
4.14.5 and up | 20.x | 18.x |
4.11.0 and up | 18.x | 16.x |
4.3.9 to 4.10.x | 18.x | 14.x |
4.0.x to 4.3.8 | 16.x | 14.x |
Database:
Database | Recommended | Minimum |
---|
MySQL | 8.0 | 5.7.8 |
MariaDB | 10.6 | 10.3 |
PostgreSQL | 14.0 | 11.0 |
SQLite | 3 | 3 |
We recommend always using the latest version of Strapi stable to start your new projects.
Features
- Content Types Builder: Build the most flexible publishing experience for your content managers, by giving them the freedom to create any page on the go with fields, components and Dynamic Zones.
- Media Library: Upload your images, videos, audio or documents to the media library. Easily find the right asset, edit and reuse it.
- Internationalization: The Internationalization (i18n) plugin allows Strapi users to create, manage and distribute localized content in different languages, called "locales
- Role Based Access Control: Create an unlimited number of custom roles and permissions for admin and end users.
- GraphQL or REST: Consume the API using REST or GraphQL
You can unlock additional features such as SSO, Audit Logs, Review Workflows in Strapi Cloud or Strapi Enterprise.
See more on our website.
Contributing
Please read our Contributing Guide before submitting a Pull Request to the project.
For general help using Strapi, please refer to the official Strapi documentation. For additional help, you can use one of these channels to ask a question:
Migration
Follow our migration guides on the documentation to keep your projects up-to-date.
Roadmap
Check out our roadmap to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.
Documentation
See our dedicated repository for the Strapi documentation, or view our documentation live:
Try live demo
See for yourself what's under the hood by getting access to a hosted Strapi project with sample data.
License
See the LICENSE file for licensing information.