Kinds of Bricks
The PixieBrix ecosystem is based on sharable/combinable components that we call "bricks". Each brick has a unique identifier and version
Analogy: bricks are like NPM or PyPi packages, except if each function had its own unique name and it's own version number.
Foundations
In YAML configuration files, foundations are defined with with kind: extensionPoint
Foundations are re-usable extension points where you can attach functionality (e.g., a click handler, or a body renderer)
PixieBrix currently has support for the following foundations:
- Menu Item: a menu item or a button (
kind: menuItem
) - Context Menu: a menu item available in the context menu when you right-click (
kind: contextMenu
) - Panel: a panel embedded on the page (
kind: panel
) - Sidebar Panel: a panel in the PixieBrix sidebar panel (
kind: actionPanel
) - Trigger: run on an event, e..g, page load, element appearance, click, etc. (
kind: trigger
)
Blocks
You can find a listing of brick in Public Marketplace, or on the Reference tab of the Workshop Editor
Blocks are functions that you can wire together and attach to a foundation
- Readers: read information from a document. Current Support: HTML via JQuery, EmberJS, React, window variables. Each foundation can provide a default reader.
- Effects: take an input and perform a side effect. Examples: append a row to spreadsheet, send a message to Slack, open a new tab with a Google search.
- Transforms: take an input and produce an output. Example: call an API, run a jq transform, extract data using a regular expression
- Renderers: a transform that returns HTML or a ReactJS component, e.g., to render in a panel extension point. Examples: renderer markdown, a data table
You can also create composite blocks that behave as a single block. In YAML configuration files, these are indicated with kind: component
Integrations
In YAML configuration files, integrations are defined with with kind: service
Re-usable resources and configuration that can also be used to authenticate requests to APIs. By creating a PixieBrix account, you can share service configurations with your team. Examples: an API credential, a Google Sheet
Blueprints
Collections of extension point + block combinations that a user can install together. Example: a collection of context menu definitions for running searches on different sites
A blueprint can also be automatically provisioned to a group(s) of users in the Admin Console (see
Input/Output Schemas
PixieBrix uses JSON Schema for specifying the shapes of inputs and outputs. In addition to serving as documentation, PixieBrix checks inputs to a brick against the schema.
If you're coming from the Javascript world, these are analogous to React's prop-types or schema validators such as Yup. In the REST API world, these are similar to an OpenAPI/Swagger specification
You can learn more about using JSON Schema with PixieBrix on the