title: "Plugin Architecture" weight: 0
{{< figure src="plugin_architecture.png" >}}
A plugin in Vendure is a specialized Nestjs Module which is decorated with the VendurePlugin class decorator. This diagram illustrates the how a plugin can integrate with and extend Vendure.
workers metadata property.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.