rollthecloudinc / quell

Climate aware CMS breaking web apps free from carbon emissions.
https://demo.carbonfreed.app/pages/create-panel-page
GNU General Public License v3.0
14 stars 1 forks source link

Plugin Workflow #322

Open ng-druid opened 1 year ago

ng-druid commented 1 year ago

Onboarding workflow for dev to get up and running creating quell plugins working specifically on extending core without needing to modify quell core code, minimal understanding of core.

  1. Running spearhead
  2. Creating plugins
  3. Invoking plugin

Running spearhead

spearhead is the designated app starter kit for easily running Quell. Spearhead doesn’t maintain any Quell core libraries. Instead the latest releases are pulled down from GitHub as packages when installing the node packages using npm install. Spearhead is supped up Angular starter kit with all magic of Quell already wired up. Spearhead can be treated like any other Angular project once cloned.

Creating Spell

Similar in nature to spearhead plugin is the app starter kit for creating a Quell extension. An extension is any Webpack 5 micro frontend compatible with module federation. Angular is the official framework of Quell therefore the plugin starter kit is configured to work with Angular. In the future there will be spell starters for specific frameworks like query-plugin-react, quell-plugin-vue, quell-plugin-ts, etc.

Invoking spell

Using a plugin inside Quell is known as plugin invocation. This process involves loading the plugin as a context into the Quell editor. Once complete the plugin has been innvocated and all plugins within the plugin module accessible from the the Quell shell / editor. In this way plugins are not your typical micro frontend. Plugins don’t typically have a default ui. Instead they define plugin implantations which provides the piping needed to extend core without ever touching Quell core code.

The context system is a pivotal part of Quell and loosely based on the Drupal context system. More detail will be provided in future docs.

Top Plugins: