A self-custodial cryptocurrency wallet built as a browser extension for Rubix and Trie networks.
- Self-Custodial: Full control over your private keys and funds
- Multi-Network Support: Compatible with Rubix and Trie networks (mainnet and testnet)
- Browser Extension: Available for Chrome and Firefox
- Secure: Advanced security features with local key storage
- User-Friendly: Intuitive interface for managing digital assets
- Transaction Management: Send, receive, and track transactions
- Network Configuration: Flexible RPC endpoint configuration
-
Clone the repository
git clone https://github.com/your-username/xell-wallet.git cd xell-wallet -
Install dependencies
npm install
-
Build for your browser
For Chrome:
npm run build:chrome
For Firefox:
npm run build:firefox
-
Load the extension
Chrome:
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
distfolder
Firefox:
- Open Firefox and navigate to
about:debugging - Click "This Firefox"
- Click "Load Temporary Add-on" and select the manifest file from
distfolder
- Open Chrome and navigate to
-
Start development server
npm run dev
-
Lint code
npm run lint
- Background Script: Handles extension lifecycle and cross-tab communication
- Content Script: Injects wallet functionality into web pages
- Popup Interface: Main wallet UI accessible from browser toolbar
- IndexedDB Storage: Secure local storage for wallet data and settings
src/
├── api/ # API configuration and axios setup
├── components/ # React UI components
├── context/ # React context providers
├── hooks/ # Custom React hooks
├── indexDB/ # IndexedDB utilities
├── manifest/ # Browser extension manifests
├── pages/ # Main application pages
├── routes/ # Application routing
└── utils/ # Utility functions and configurations
The wallet supports multiple networks through a flexible configuration system:
- Rubix Mainnet/Testnet: Primary blockchain networks
- Trie Mainnet/Testnet: Alternative blockchain networks
- Custom RPC: User-configurable endpoints
The wallet requires the following backend services to be available:
- Network APIs: Blockchain node endpoints for transaction processing
- Configuration Service: External configuration for network parameters
- Explorer APIs: Transaction and address lookup services
The wallet uses two configuration methods:
- Direct Code Configuration: Modify values directly in
config.jsandsrc/api/endpoints.js - External Configuration API: Dynamic configuration loaded at runtime
The wallet can be configured via an external JSON configuration file. Update the URL in config.js:
const CONFIG_API_URL = 'https://your-domain.com/config.json';Example configuration format:
{
"URLS": {
"RUBIX_MAINNET_BASE_URL": "https://mainnet-api.example.com",
"RUBIX_TESTNET_BASE_URL": "https://testnet-api.example.com",
"TRIE_MAINNET_BASE_URL": "https://trie-mainnet.example.com",
"TRIE_TESTNET_BASE_URL": "https://trie-testnet.example.com"
},
"ALLOWED_ORIGINS": ["https://your-dapp.com"]
}We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
For security concerns, please see our Security Policy.
This project is open source. Please check the repository for license details.
- Issues: Report bugs and request features via GitHub Issues
- Discussions: Join community discussions in GitHub Discussions
See CHANGELOG.md for version history and changes.