๐ The complete TypeScript toolkit for building on Tari โ Connect any wallet, query the blockchain, and create powerful dApps with confidence.
โจ What makes tari.js special?
- ๐ Universal Wallet Support โ MetaMask, Wallet Daemon, Universe, WalletConnect โ all with one API
- ๐ก๏ธ Privacy-First โ Built-in confidential transactions and zero-knowledge proofs
- ๐ฑ Developer Friendly โ Full TypeScript support, intuitive APIs, comprehensive docs
- โก Production Ready โ Battle-tested, optimized, and actively maintained
Get your first Tari app running in minutes:
# Install tari.js
npm install @tari-project/tarijs @tari-project/wallet-daemon-signer
# Run your first connection test
node -e "
import { WalletDaemonTariSigner, TariPermissions } from '@tari-project/tarijs';
const wallet = await WalletDaemonTariSigner.buildFetchSigner({
serverUrl: 'http://localhost:18103',
permissions: new TariPermissions()
});
console.log('Connected to Tari!');
"
๐ Complete Installation Guide | 5-Minute Tutorial
// Transfer tokens
const transaction = new TransactionBuilder()
.feeTransactionPayFromComponent(account.address, "100")
.callMethod({
componentAddress: account.address,
methodName: 'withdraw'
}, [{ type: 'Amount', value: '1000' }])
.build();
// Call a smart contract function
const transaction = new TransactionBuilder()
.feeTransactionPayFromComponent(account.address, "100")
.callFunction({
templateAddress: nftTemplate.address,
functionName: 'mint_nft'
}, [{ name: 'metadata', value: { name: "Epic Sword", rarity: "legendary" } }])
.build();
// Multiple operations in one transaction
const transaction = new TransactionBuilder()
.feeTransactionPayFromComponent(account.address, "100")
.callMethod({ componentAddress: account1, methodName: 'withdraw' }, [amount1])
.callMethod({ componentAddress: account2, methodName: 'withdraw' }, [amount2])
.build();
Wallet | Best For | Status |
---|---|---|
๐ฅ๏ธ Tari Wallet Daemon | Servers, advanced features | โ Production |
๐ฆ MetaMask | Browser apps, familiar UX | โ Production |
๐ Tari Universe | Mobile, native experience | โ Production |
๐ฑ WalletConnect | Cross-platform, mobile-first | โ Production |
- Installation Guide โ Set up your development environment
- First App Tutorial โ Build a working wallet app
- Provider vs Signer โ Understand the core concepts
- Wallet Integration โ Connect different wallet types
- Transaction Building โ Create complex transactions
- Production Deployment โ Go live with confidence
- Complete API Reference โ Every method documented
- Troubleshooting โ Common issues & solutions
- Templates & Examples โ Copy-paste code snippets
Want to contribute? We'd love your help! Here's how to get started:
# 1. Clone with required dependencies
git clone https://github.com/tari-project/tari.js
git clone https://github.com/tari-project/tari-ootle ../tari-ootle
# 2. Install toolchain
curl -fsSL https://moonrepo.dev/install/proto.sh | bash
proto use
# 3. Build everything
pnpm install
moon tarijs:build
cd packages/tarijs/example
cp .env.example .env # Configure your wallet endpoints
pnpm run dev # Start development server
docker build -t tarijs .
docker create --name tarijs-build tarijs
docker cp tarijs-build:/app/combined_dist/ ./dist
moon tari-docs:start # http://localhost:3000/tari.js/
Need help getting started? Check our Contributing Guide or ask in GitHub Discussions.
- ๐ Complete Documentation โ Everything you need to know
- ๐ฌ GitHub Discussions โ Ask questions, share ideas
- ๐ Issue Tracker โ Report bugs, request features
- ๐ง Troubleshooting Guide โ Common issues & solutions
- ๐ฎ Example Apps โ See tari.js in action
This project is licensed under the BSD 3-Clause License โ see the LICENSE file for details.
Built with โค๏ธ by the Tari Project