Welcome to the official monorepo for Pulsar, a headless, local-first transaction lifecycle tracking engine for the TUWA Ecosystem.
Pulsar is "The Tracker" within the ecosystem, occupying Layer 3 (L3) (Headless Core Store) and Layer 4 (L4) (Network State Adapters & Framework Bindings). Its single purpose is asynchronous multi-chain transaction lifecycle indexing and client-side reconciliation.
It is designed to be consumed by any UI layer, with our official implementation being the Nova UI Kit.
The architecture is modular and layered:
- 🧠 Core (
@tuwaio/pulsar-core): A framework-agnostic state machine that knows how to manage state but nothing about specific blockchains. - 🔌 Adapters (
@tuwaio/pulsar-evm,@tuwaio/pulsar-solana): Platform-specific modules that plug into the core. They teach Pulsar how to interact with specific ecosystems like EVM or Solana. - ⚛️ Bindings (
@tuwaio/pulsar-react): Framework-specific packages that provide hooks and utilities to easily connect Pulsar to a UI framework's lifecycle.
- Framework-Agnostic Core: Framework-agnostic headless core store providing append-only localStorage transaction history ledgers.
- Multi-Chain by Design: The adapter pattern allows for extending support to any blockchain.
- Persistent State: Automatically resumes tracking pending transactions after a page reload.
- Rich Ecosystem Support:
- EVM Adapter: Supports standard transactions, Safe multisigs, and Gelato relay.
- Solana Adapter: Supports Wallet Standard, cluster management, and transaction tracking.
- Type-Safe: Written entirely in TypeScript to ensure a robust developer experience.
This repository is a monorepo managed using pnpm workspaces.
Follow these steps to set up the development environment on your local machine.
git clone [https://github.com/TuwaIO/pulsar-core.git](https://github.com/TuwaIO/pulsar-core.git) cd pulsar-coreThis project uses pnpm as its package manager.
pnpm installAfter installation, build all packages to ensure the monorepo is correctly linked.
pnpm buildContributions are welcome! Please read our main Contribution Guidelines.
If you find this library useful, please consider supporting its development. Every contribution helps!
This project is licensed under the Apache-2.0 License - see the LICENSE file for details.
