✨ The open-source standard for blocks. From @hashintel
OTHER License
Public monorepo for the Block Protocol.
The Block Protocol is an open standard for building, using and embedding data-driven blocks. Blocks developed in accordance with the protocol allow you to make websites and applications that are both more useful to and readable by humans and machines. Neither blocks nor the applications that embed them require any knowledge of each other's existence. Both need only conform to the protocol.
Please refer to the Block Protocol documentation for complete instructions on using the Block Protocol, including:
For more examples, please refer to the Block Protocol documentation or browse the complete Þ Hub.
Learn more on our Roadmap page in the docs.
Finding things within a monorepo isn't always straight forward, in particular if you're an external contributor looking at a repository for the first time. We've tried to logically separate our repo into executable applications or tools (apps
), developer libraries including packages and crates (libs
), and a collection of Block Protocol maintained blocks (blocks
). As an open-source community project, we welcome contributions.
As a block developer, you probably care most about our utility libraries. All of the below are contained within the libs
folder and are available via yarn add <package_name>
or npm install <package_name>
. Individual README files within each directory provide more details.
@blockprotocol/core
: implements the Block Protocol Core specification for blocks and embedding applications@blockprotocol/graph
: implements the Block Protocol Graph module for blocks and embedding applications@blockprotocol/hook
: implements the Block Protocol Hook module for blocks and embedding applications@blockprotocol/type-system
: implements the type system as a WebAssembly-based npm package (with code autogenerated from crate
subfolder)@local/*
: auxiliary Yarn workspaces for local development and testingblock-scripts
: scripts used by block-template-*
block-template-*
: starter templates for blocks, used by create-block-app
blockprotocol
: command line interface for interacting with the Block Protocol API, e.g. for publishing blockscreate-block-app
: a script to create a new block using block-template-*
mock-block-dock
: a lightweight mock embedding application that can be used to test blocks during their developmentYou might also find the Þ feature showcase block helpful, for an all-in-one reference demonstrating the implementation of different Block Protocol methods.
apps/site
: the code for blockprotocol.org, including:
rfcs
: contains RFCs (Requests For Comments); this folder is intended to maintain a consistent and controlled process for new features to enter the project
libs/@blockprotocol/type-system
: Rust crate which auto-generates a WebAssembly-based npm package, providing a single source of truth for type system definitions
The Block Protocol is an open-source standard, and community contributions are what make open-source such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
Please consider starring the project and watching it on GitHub, to be kept abreast of future developments and show your appreciation.
If you’ve got an idea for a new block, would like to make a suggestion that improves the protocol itself, or want to contribute to a better developer experience for users of the protocol, then please either open an RFC, or open an issue with the tag “enhancement”. If you're unsure as to which is more appropriate, read the "When to follow this process" section of our RFC README.
Please feel free to fork the repo in order to create a pull request:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)If you’re looking for inspiration regarding new blocks to build, or contributions you could make, please check the open issues. See CONTRIBUTING for more information.
The vast majority of this repository is dual-licensed under the Apache 2.0 and MIT licenses, at your option. See the LICENSE file for more information.
Please see SECURITY for instructions around reporting issues, and details of which package versions we actively support.
Find us on 𝕏 at @blockprotocol or email [email protected]
Project permalink: https://github.com/blockprotocol/blockprotocol