Architecture
cfxdevkit follows a four-tier layered architecture. Dependencies flow downward only — no upward or circular imports are allowed.
Tier model
┌──────────────────────────────────────────────────────────────────┐
│ Tier 3 — Projects & Apps │
│ projects/cas │ projects/chainbrawler │ projects/electro │
├──────────────────────────────────────────────────────────────────┤
│ Tier 2 — Domain Logic │
│ repos/cfx-domain │
├──────────────────────────────────────────────────────────────────┤
│ Tier 1 — Developer Platform │
│ repos/cfx-tools │
├──────────────────────────────────────────────────────────────────┤
│ Tier 0 — Framework │
│ cfx-solidity │ cfx-core │ cfx-ui │ cfx-keys │
└──────────────────────────────────────────────────────────────────┘
▲ ▲ ▲
tools/ infrastructure/ docs/ ← cross-cuttingPackage map
| Package | Tier | Repo slice |
|---|---|---|
@cfxdevkit/abis | 0 | repos/cfx-solidity |
@cfxdevkit/cdk | 0 | repos/cfx-core |
@cfxdevkit/contracts | 0 | repos/cfx-solidity |
@cfxdevkit/defi-react | 0 | repos/cfx-ui |
@cfxdevkit/devnode | 0 | repos/cfx-core |
@cfxdevkit/executor | 0 | repos/cfx-core |
@cfxdevkit/protocol | 0 | repos/cfx-core |
@cfxdevkit/react | 0 | repos/cfx-ui |
@cfxdevkit/services | 0 | repos/cfx-keys |
@cfxdevkit/signer-session | 0 | repos/cfx-keys |
@cfxdevkit/testing | 0 | repos/cfx-core |
@cfxdevkit/theme | 0 | repos/cfx-ui |
@cfxdevkit/ui | 0 | repos/cfx-ui |
@cfxdevkit/ui-core | 0 | repos/cfx-ui |
@cfxdevkit/wallet | 0 | repos/cfx-keys |
@cfxdevkit/wallet-connect | 0 | repos/cfx-ui |
@cfxdevkit/cli | 1 | repos/cfx-tools |
@cfxdevkit/client | 1 | repos/cfx-tools |
@cfxdevkit/compiler | 1 | repos/cfx-tools |
@cfxdevkit/create | 1 | repos/cfx-tools |
@cfxdevkit/devnode-core | 1 | repos/cfx-tools |
@cfxdevkit/devnode-server | 1 | repos/cfx-tools |
@cfxdevkit/keystore-server | 1 | repos/cfx-tools |
@cfxdevkit/llm-agents | 1 | repos/cfx-tools |
@cfxdevkit/mcp-server | 1 | repos/cfx-tools |
@cfxdevkit/automation | 2 | repos/cfx-domain |
@cfxdevkit/game-engine | 2 | repos/cfx-domain |
Key principles
One-way dependency graph — Tiers cannot create cycles. A tier-0 package must never import from tier-1 or higher.
Explicit public surfaces — Every publishable package exposes an exports map in package.json. Deep imports outside the declared sub-paths are not supported.
No circular dependencies — Enforced by Moon task ordering and arch-check CI gate.
Config packages are not tiers — Shared config packages (biome-config, tsconfig, moon-config, arch-rules) are build-time utilities excluded from the tier model.
This file is fully regenerated by pnpm sync:architecture. Do not edit manually.
Last updated on