This is a monorepo for the Node Classification Metadata project, sponsored by ENS. An ENSIP is currently in development to standardize a protocol for adding additional metadata attributes to ENS names. This will make it possible to attach structured, typed records (like organizational roles, categories, or labels) directly to ENS nodes onchain. This repo includes a proof-of-concept interface for reading and writing those records, along with the supporting SDK, schemas, and documentation.
For additional background on the project, see our Notion page.
Live deployments:
# Install dependencies
pnpm install
# Start all apps/packages in dev mode
pnpm dev
# Or run just the interface
pnpm interface| Command | Description |
|---|---|
pnpm build |
Build all packages and apps |
pnpm dev |
Run everything in development mode |
pnpm interface |
Run only the interface app in dev mode |
pnpm lint |
Lint all workspaces via Biome |
pnpm format |
Auto-format the entire repo via Biome |
pnpm abis |
Regenerate contract ABIs via Wagmi CLI |
| Directory | Description |
|---|---|
apps/docs |
Primary project documentation, built with Vocs (README) |
apps/interface |
Next.js web UI for reading/writing metadata records (README) |
apps/contracts |
Placeholder for future helper smart contracts |
| Directory | Description |
|---|---|
packages/sdk |
SDK for interacting with the metadata protocol (built on viem) |
packages/schemas |
Toolchain for publishing JSON schemas to IPFS |
packages/abis |
TypeScript-first ABI definitions for the relevant contracts |
packages/shared |
Shared utilities and types used across the monorepo |
packages/tsconfig |
Shared TypeScript configuration |
This project uses Turborepo for orchestrating builds across the monorepo and pnpm workspaces for dependency management.
Code quality is enforced automatically:
- Formatting & linting are handled by Biome.
- Commit messages follow Conventional Commits, enforced by commitlint and Husky git hooks.