title: "Plugin Architecture" weight: 0
{{< figure src="plugin_architecture.png" >}}
A plugin in Vendure is a specialized Nestjs Module that is decorated with the VendurePlugin class decorator. This diagram illustrates how a plugin can integrate with and extend Vendure.
configuration metadata property.shopApiExtensions metadata property and the adminApiExtensions metadata property.PluginCommonModule, by which it may inject any of the core Vendure services (which are responsible for all interaction with the database as well as business logic). Additionally, a plugin may define new database entities via the entities metadata property and otherwise define any other providers and controllers just like any Nestjs module.