Installation
Install and configure BondKit for launching ERC20 bond tokens on Base.
Prerequisites
Quick Start Options
Install the SDK
pnpm add @b3dotfun/sdknpm install @b3dotfun/sdkyarn add @b3dotfun/sdkProject Setup
bash# Create a new project mkdir my-bondkit-app cd my-bondkit-app pnpm init # Install dependencies pnpm add @b3dotfun/sdk typescript pnpm add -D @types/node tsx # Create TypeScript config npx tsc --init
Add to Existing Project
pnpm add @b3dotfun/sdknpm install @b3dotfun/sdkyarn add @b3dotfun/sdkNote
The SDK includes all necessary dependencies including viem
Clone Demo Application
The fastest way to get started is with our complete demo application:
bash# Clone the B3 monorepo git clone https://github.com/b3dotfun/b3-monorepo.git cd b3-monorepo # Install dependencies pnpm install # Navigate to the BondKit demo cd apps/bondkit-demo # Set up environment cp .env.example .env.local # Edit .env.local with your configuration # Run the demo pnpm dev
Info
The demo app is located at apps/bondkit-demo/src/app/ and includes:
- Complete token deployment flow
- Trading interface with TradingView charts
- Wallet connection with B3 authentication
- Real-time price and volume tracking
- Migration management interface
Demo App Structure
textapps/bondkit-demo/src/app/ ├── page.tsx # Landing page with token list ├── deploy/page.tsx # Token deployment interface ├── token/[address]/page.tsx # Individual token trading page ├── providers.tsx # Web3 providers setup ├── b3ProviderWrapper.tsx # B3 authentication wrapper └── api/ # TradingView data endpoints └── udf/ # Universal Data Feed for charts
Environment Configuration
Basic Setup
Create a .env file in your project root:
bash# Required for server-side operations WALLET_PRIVATE_KEY=0x... # Optional: Custom RPC endpoint (defaults to public) RPC_URL=https://base-mainnet.g.alchemy.com/v2/YOUR_KEY # Optional: API configuration BONDKIT_API_ENDPOINT=https://api.b3.fun
Security Best Practices
Warning
Never commit private keys to version control!
- Add
.envto your.gitignore - Use environment variables in production
- Consider using a key management service
- Use separate wallets for development and production
Client Initialization
Basic Setup
typescriptimport { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit"; import { base } from "viem/chains"; // For server-side usage with private key const factory = new BondkitTokenFactory( base.id, process.env.WALLET_PRIVATE_KEY ); // For client-side usage with wallet provider const clientFactory = new BondkitTokenFactory(base.id); await clientFactory.connect(window.ethereum);
Advanced Configuration
typescriptimport { BondkitTokenFactory, BondkitToken, getConfig } from "@b3dotfun/sdk/bondkit"; import { createWalletClient, custom } from "viem"; import { base } from "viem/chains"; // Custom wallet client setup const walletClient = createWalletClient({ chain: base, transport: custom(window.ethereum) }); // Initialize with custom configuration const config = getConfig(base.id); const factory = new BondkitTokenFactory(base.id); // Connect with custom wallet client await factory.connect(walletClient.transport); // Work with existing token const token = new BondkitToken( "0x123...", // token address process.env.WALLET_PRIVATE_KEY );
TypeScript Configuration
Recommended tsconfig.json for BondKit projects:
json{ "compilerOptions": { "target": "ES2020", "module": "ESNext", "lib": ["ES2020", "DOM"], "moduleResolution": "node", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "allowJs": true, "noEmit": true }, "include": ["src/**/*"], "exclude": ["node_modules"] }
Testing Your Setup
Create a test file test-bondkit.ts:
typescriptimport { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit"; import { base } from "viem/chains"; async function testConnection() { try { const factory = new BondkitTokenFactory(base.id); const implementationAddress = await factory.getImplementationAddress(); console.log("✅ BondKit SDK connected successfully!"); console.log("Implementation address:", implementationAddress); } catch (error) { console.error("❌ Connection failed:", error); } } testConnection();
Run the test:
bashnpx tsx test-bondkit.ts
Next Steps
Troubleshooting
Ensure the SDK is properly installed:
bashpnpm add @b3dotfun/sdk
If using React components, you may need:
bashpnpm add @wagmi/core @tanstack/react-query
Update TypeScript to latest version:
bashpnpm add -D typescript@latest @types/node@latest
- Verify your RPC endpoint is working
- Check wallet has sufficient Base ETH
- Ensure private key format is correct (with 0x prefix)
Clear cache and reinstall:
bashrm -rf node_modules .next pnpm install