Definition of "Project"
“Project” is defined as a unique configuration of the Strapi Software which may be replicated and deployed on multiple Environments, scaled on several Environments, or scaled on several instances on a localhost or under the same subdomain, in each case such configuration producing an identical Strapi API and content model structure (backend and frontend). A unique configuration of the Strapi Software will result in a unique content structure, a unique “Strapi API”. If Software is configured even slightly differently to create a second slightly different Strapi API and content model structure, this will be deemed a use of the Software for a new or different Project.
For Enterprise Edition licensing, we distribute these on a "per project" basis. This is subject to the terms of your specific license, if you have questions please do create a ticket if you have questions on the definition below.
Licensing is also based on the number of admin users per project, for more information on who is considered an admin, see the following article.
What is a Project
A Strapi "project" is defined as a single Strapi application that contains a single "model structure" and the same model logic; but can be deployed in such a way as to handle large amounts of traffic.
Some examples of a large traffic environment include:
- Vertical scaling
- Running multiple "instances" of the Strapi project on the same host (virtual or bare metal)
- Utilizing process managers such as PM2 that have built in instance scaling
- Horizontal scaling
- Running multiple "instances" of the Strapi project on multiple hosts and utilizing a load balancer to route traffic using various methods (round-robin, least connections, resource based, weighted, ect)
What is not a Project
What is not considered a "project" is a single code base that is reused multiple times and may contain slightly different logic (either backend or frontend) or small differences in model structure.
Some examples of environments that are not considered a single project include, but are not limited to:
- Multi-tenacy based distributed applications
- Client A has 4 fields in an "articles" model
- Client B has 5 fields in an "articles" model
- Multiple projects serving different websites
- Client 1 has one Strapi instance to power their website: client1.example.com
- Client 2 has one Strapi instance to power their website: client2.example.com
- A template project that can be downloaded (free or paid) and used by multiple people
How do environments and instances differ from a project
It should be noted that these restrictions do not apply to environments as we do not limit the number of instances or environments you are using.
Some examples of different environments/instances include:
- Development environment
- Multiple backend or frontend developers running the enterprise edition on their local machines for development and testing
- Staging environment
- A dedicated testing environment with 3 Strapi instances to run tests on or preview content
- Production environment
- An active use environment with 10 Strapi instances in a load balance or fault tolerant configuration to serve production content
- Depreciated versioned environment
- A legacy environment that is still required by some clients while they migrate to the new version of your Strapi API