⚠️ Early Stage: Compose is currently in development and only available to contributors and early adopters. It is NOT production ready.
What is Compose?
A smart contract development framework for building modular systems with ERC-8153 Diamonds.
Compose gives you a clear way to split contract functionality into focused facets, reuse proven building blocks, and evolve your onchain application with ease.
The framework includes:
- A Solidity library of reusable facets and modules
- A CLI toolkit for projects with Foundry or Hardhat
- Design patterns for combining Compose components with custom logic
- Documentation for building, extending, and testing diamond systems
Why Compose is Different
Smart contracts are hard enough to audit and maintain. Compose keeps each piece small, explicit, and easy to read.
We use intentional Solidity constraints and conventions designed specifically for smart contracts. This is Smart Contract Oriented Programming (SCOP).
Core Philosophy
- Read First: Code written to be understood, not just executed
- Diamond-Native: Built specifically for ERC-2535 / ERC-8153 diamond contracts
- Composition Over Inheritance: Combine facets instead of inheriting contracts
- Intentional Simplicity: Banned features lead to clearer, safer code
Quick Start
Create a new project with Compose CLI
npx @perfect-abstractions/compose-cli init
Add Compose to an existing project (Manual Installation)
Foundry
forge install Perfect-Abstractions/Compose@[email protected]
Hardhat / NPM
npm install @perfect-abstractions/compose
Packages: @perfect-abstractions/compose · @perfect-abstractions/compose-cli. More detail: Installation.
Documentation
Please see our documentation website for full documentation.
Contributing
We welcome contributions from everyone! Compose grows through community involvement.
Please see the documentation for contributing.