Contributing to BoltzPay

March 10, 2026 · View on GitHub

Thank you for your interest in contributing to BoltzPay! This guide will help you get started.

Prerequisites

  • Node.js >= 20
  • pnpm 10

Setup

git clone https://github.com/leventilo/boltzpay.git
cd boltzpay
pnpm install
pnpm build
pnpm test

Project Structure

PackageDescription
packages/coreDomain types and value objects (zero dependencies)
packages/protocolsProtocol adapters for x402 and L402
packages/sdkComposition root — the BoltzPay class and agent.fetch()
packages/mcpMCP server for Claude Desktop (7 tools)
packages/cliCLI for terminal usage and Python bridge
apps/landingAstro static landing page

Development Commands

pnpm dev          # Watch mode (all packages)
pnpm build        # Build all packages
pnpm test         # Run tests (Vitest)
pnpm lint         # Lint and format (Biome)
pnpm typecheck    # Type check (TypeScript)

Submitting a Pull Request

  1. Fork the repository and clone your fork.
  2. Create a branch from main:
    git checkout -b feat/my-feature
    
  3. Write tests for any new functionality.
  4. Ensure CI passes locally:
    pnpm build && pnpm lint && pnpm typecheck && pnpm test
    
  5. Push your branch and open a Pull Request.
  6. Describe your changes clearly in the PR description.

Coding Standards

  • TypeScript strict mode — no any, no implicit returns.
  • Biome for formatting and linting — run pnpm lint before committing.
  • ESM-first — all packages use "type": "module".
  • Domain-Driven Design — core domain has zero external dependencies.

Commit Convention

We use Conventional Commits:

PrefixUsage
featNew feature
fixBug fix
docsDocumentation only
testAdding or updating tests
refactorCode change that neither fixes a bug nor adds a feature
choreTooling, config, dependencies

Example: feat(sdk): add retry logic to fetch()

License

By contributing, you agree that your contributions will be licensed under the MIT License.