Documents
plugin-structure
plugin-structure
Type
External
Status
Published
Created
Mar 5, 2026
Updated
Mar 6, 2026
Updated by
Dosu Bot

import InteractivePluginStructure from '@.../src/components/PluginStructure.js'

Plugin structure#

When creating a plugin with Plugin SDK, Strapi generates the following boilerplate structure for you in the /src/plugins/my-plugin folder:

A Strapi plugin is divided into 2 parts, each living in a different folder and offering a different API:

Plugin partDescriptionFolderAPI
Admin panelIncludes what will be visible in the admin panel (components, navigation, settings, etc.)admin/Admin Panel API
Backend serverIncludes what relates to the backend server (content-types, controllers, middlewares, etc.)server/Server API

:::note Notes about the usefulness of the different parts for your specific use case

  • Server-only plugin: You can create a plugin that will just use the server part to enhance the API of your application. For instance, this plugin could have its own visible or invisible content-types, controller actions, and routes that are useful for a specific use case. In such a scenario, you don't need your plugin to have an interface in the admin panel.

  • Admin panel plugin vs. application-specific customization: You can create a plugin to inject some components into the admin panel. However, you can also achieve this by creating a /src/admin/index.js file and invoking the bootstrap lifecycle function to inject your components. In this case, deciding whether to create a plugin depends on whether you plan to reuse and distribute the code or if it's only useful for a unique Strapi application.
    :::


:::strapi What to read next?
The next steps of your Strapi plugin development journey will require you to use any of the Strapi plugins APIs.

2 different types of resources help you understand how to use the plugin APIs:

  • The reference documentation for the Admin Panel API and Server API give an overview of what is possible to do with a Strapi plugin.
  • Guides cover some specific, use-case based examples.
    :::