Welcome to tari.js! 👋
Build powerful Tari applications with confidence — tari.js is the complete TypeScript toolkit for connecting wallets, querying the blockchain, and creating amazing dApps.
🚀 What is tari.js?
tari.js is the universal JavaScript/TypeScript library for building on Tari. Whether you're creating a DeFi app, an NFT marketplace, or an enterprise solution, tari.js provides everything you need:
- 🔌 Universal Wallet Support — Connect MetaMask, Wallet Daemon, Universe, WalletConnect 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
✨ What Makes tari.js Special?
🎯 Provider/Signer Architecture
Clean separation between reading data and wallet operations:
// 📖 Provider: Read blockchain data (no wallet needed)
const provider = new IndexerProvider('http://localhost:18300');
const balance = await provider.getSubstate(substateId);
// ✍️ Signer: Wallet operations (requires authentication)
const signer = new WalletDaemonSigner('http://localhost:18103');
const tx = await signer.submitTransaction(transaction);
🧩 Unified API Across All Wallets
Same code works with any wallet type:
// Works with MetaMask, Universe, Wallet Daemon, WalletConnect
const wallet = await connectWallet();
const account = await wallet.getDefaultAccount();
const result = await wallet.submitTransaction(tx);
🏗️ Powerful Transaction Builder
Fluent API for complex operations:
const transaction = new TransactionBuilder()
.fee(100)
.callMethod('account', 'transfer', { amount: 1000, destination })
.callFunction('nft_template', 'mint', { metadata })
.build();
🎯 Quick Navigation
🚀 Get Started (5 minutes)
- Installation — Set up your development environment
- Getting Started Tutorial — Build your first app
- Provider vs Signer — Understand core concepts
🔌 Wallet Integration
- Wallet Daemon — Full-featured server integration
- MetaMask — Browser wallet via tari-snap
- Tari Universe — Native mobile experience
- WalletConnect — Cross-platform mobile wallets
🏗️ Building Transactions
- Transaction Builder — Create complex transactions
- Template System — Work with smart contracts
- Fee Management — Optimize transaction costs
🔧 Reference
- Complete API Reference — Every method documented
- Troubleshooting — Common issues & solutions
- Production Deployment — Go live securely
📚 Documentation Structure
This documentation is organized for different user journeys:
If you're... | Start here |
---|---|
🆕 New to tari.js | Installation → Getting Started Tutorial |
🔌 Integrating wallets | Provider vs Signer → Wallet Documentation |
🏗️ Building transactions | Transaction Builder → Templates |
🚨 Having issues | Troubleshooting → GitHub Issues |
📖 Looking for specifics | API Reference → Search this site |
🆕 What's New in v0.5.0
Provider/Signer Split — We've separated data access from wallet operations for better security and flexibility. Learn about the changes →
🎉 New Features
- 🔌 Unified wallet connection API across all wallet types
- 🏗️ Enhanced transaction builder with fluent API design
- 📱 Improved mobile support for React Native and PWAs
- 🛡️ Better error handling and debugging tools
🔄 Migration Guide
Upgrading from v0.4.0? Check our GitHub releases for upgrade instructions.
🤝 Community & Support
- 💬 GitHub Discussions — Ask questions, share ideas
- 🐛 Issue Tracker — Report bugs, request features
- 📺 Discord Community — Real-time chat with developers
- 🎮 Example Apps — See tari.js in action
Ready to build something amazing? Install tari.js and create your first Tari application in 5 minutes! 🚀