Skip to content

Contribution Guide

Welcome to OnchainKit! So you want to contribute to this project? You came to the right place.

In this guide, you will learn how to:

Setup

Clone the repo

git clone [email protected]:coinbase/onchainkit.git

Install Node and pnpm

Use nvm, mise, n or your favorite version manager to install Node.js.

For pnpm, see the installation instructions on the pnpm website.

Install dependencies

From the root of the repository:

pnpm install

Codebase

This project is a monorepo managed with pnpm. The @coinbase/onchainkit package is located in:

packages/onchainkit/

Here is a rough layout of the codebase:

packages/onchainkit/
└── src/
   ├── api/                         - API related components and functions
   ├── core/                        - Files with zero dependencies
   ├── styles/                      - Styles
   │   ├── index-with-tailwind.css  - CSS entrypoint
   ├── {Component}/                 - Component folder
   │   ├── components/              - React components
   │   │   ├── {Name}.tsx
   │   │   ├── {Name}.test.tsx
   │   │   └── {Name}.css
   │   ├── core/                    - Utility functions
   │   ├── index.ts                 - Entrypoint for the folder
   │   └── types.ts                 - Export types
   │
   ├── index.ts                     - Main package entry point
   ├── types.ts                     - Core types
   └── OnchainKitProvider.tsx       - OnchainKit provider

Workflows

Development

To work on OnchainKit components with live UI feedback:

pnpm f:play dev

This will build the OnchainKit package in watch mode, and start a development environment (the playground) where you can see your components in action.

As you make changes, the playground will update automatically.

Navigate to http://localhost:3000 to open the playground.

Building

To build the package:

pnpm f:ock build

Testing

Write and update existing unit tests. You can run tests with:

pnpm f:ock test

For watching file changes and rerunning tests automatically:

pnpm f:ock test:watch

We expect 100% code coverage for any updates. You can get coverage information with:

pnpm f:ock test:coverage

If the coverage drops below 100%, look at the coverage report generated by the above command with:

open coverage/index.html

Updating changelog

To update the change log, run:

pnpm changeset

Select minor and use the following format for the summary:

- **feat**: feature update information. By @your-github-id #XX (XX is the PR number)

Possible values are:

  • feat
  • fix
  • docs
  • chore

Feature request

Have a component in mind that we are not supporting yet? You can submit a feature request to our Github. Create a "New issue" and label it "Feature Request: ...".