{"id":46519327,"url":"https://github.com/viaweb3/cryptocast-desktop","last_synced_at":"2026-03-06T19:08:54.403Z","repository":{"id":325057310,"uuid":"1099548147","full_name":"viaweb3/cryptocast-desktop","owner":"viaweb3","description":"CryptoCast Desktop - Multi-chain Batch Airdrop \u0026 Reward Distribution Platform with Support for Ethereum, Solana, and 10+ Blockchains. Secure wallet management, real-time campaign tracking, and scalable token distribution for DeFi projects, NFT communities, and Web3 platforms.","archived":false,"fork":false,"pushed_at":"2025-12-18T01:31:09.000Z","size":4988,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-21T09:21:29.360Z","etag":null,"topics":["airdrop","blockchain","cryptocurrency","desktop","desktop-app","electron","ethereum","evm","solana","web3"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viaweb3.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T06:11:03.000Z","updated_at":"2025-12-18T01:31:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/viaweb3/cryptocast-desktop","commit_stats":null,"previous_names":["viaweb3/batch-airdrop-desktop","viaweb3/cryptocast-desktop"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/viaweb3/cryptocast-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viaweb3%2Fcryptocast-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viaweb3%2Fcryptocast-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viaweb3%2Fcryptocast-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viaweb3%2Fcryptocast-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viaweb3","download_url":"https://codeload.github.com/viaweb3/cryptocast-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viaweb3%2Fcryptocast-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30192445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T18:54:55.862Z","status":"ssl_error","status_checked_at":"2026-03-06T18:53:04.013Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airdrop","blockchain","cryptocurrency","desktop","desktop-app","electron","ethereum","evm","solana","web3"],"created_at":"2026-03-06T19:08:53.565Z","updated_at":"2026-03-06T19:08:54.381Z","avatar_url":"https://github.com/viaweb3.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CryptoCast Desktop - Professional Batch Airdrop Tool\n\n\u003e 🚀 Multi-chain Cryptocurrency Batch Reward Distribution Platform - Secure, Efficient, and User-Friendly Desktop Application\n\n**🌍 Languages / 语言 / Idiomas / Langues / Sprachen / языки / اللغة / 언어 / 言語 / Tiếng Việt / Türkçe:**\n[🇺🇸 English](./docs/en/README.md) | [🇨🇳 中文](./docs/zh/README.md) | [🇪🇸 Español](./docs/es/README.md) | [🇫🇷 Français](./docs/fr/README.md) | [🇩🇪 Deutsch](./docs/de/README.md) | [🇵🇹 Português](./docs/pt/README.md) | [🇷🇺 Русский](./docs/ru/README.md) | [🇸🇦 العربية](./docs/ar/README.md) | [🇰🇷 한국어](./docs/ko/README.md) | [🇯🇵 日本語](./docs/ja/README.md) | [🇻🇳 Tiếng Việt](./docs/vi/README.md) | [🇹🇷 Türkçe](./docs/tr/README.md)\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)\n[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS-lightgrey.svg)](../../.github/workflows/build.yml)\n[![CI/CD](https://img.shields.io/badge/CI%2FCD-GitHub%20Actions-blue.svg)](../../.github/workflows/build.yml)\n\n---\n\n## 📖 Project Overview\n\nCryptoCast Desktop is a professional cross-platform desktop application built on Electron, designed for marketing campaigns, airdrop distribution, and community rewards, supporting batch token distribution on EVM-compatible chains and Solana.\n\n### ✨ Core Features\n\n#### 🔗 **Multi-Chain Support**\n- **EVM Chains**: Ethereum, Polygon, BSC, Arbitrum, Optimism, Base, Avalanche, etc.\n- **Solana**: Mainnet and devnet support\n- **Smart Contracts**: Pre-deployed batch transfer contracts, optimized for gas fees\n\n#### 📦 **Batch Operations**\n- **Large-Scale Processing**: Import addresses and amounts from CSV files\n- **Batch Transfers**: ERC-20 and Solana (SPL) Token batch sending\n- **Real-Time Progress**: Visualized distribution progress and status monitoring\n\n#### 🔒 **Security and Privacy**\n- **Local-First**: All sensitive data (such as private keys) are encrypted and stored locally, never passing through any server\n- **Isolated Wallets**: Each campaign uses an independent derived wallet, isolating fund risks\n- **Fully Offline**: Core functions can operate in offline mode (transaction signing, etc.)\n\n#### 💡 **User Experience**\n- **Cross-Platform**: Supports Windows and macOS (Intel \u0026 Apple Silicon)\n- **Intuitive Interface**: Modern design with simple and clear interaction\n- **Cost Estimation**: Real-time gas fee and total cost estimation\n- **Transaction History**: Complete transaction history and status tracking\n- **Structured Logging**: Winston logging system for easy debugging and issue tracking\n\n---\n\n## 📚 Documentation\n\n- **[Architecture Design](../../ARCHITECTURE.md)** - System architecture and technical decisions\n- **[Development Guide](../../DEVELOPMENT.md)** - Development environment setup and workflow\n- **[API Documentation](../../API_DOCS.md)** - Internal API documentation\n- **[Testing Guide](../../TESTING.md)** - Testing strategy and execution\n- **[Contributing Guide](./CONTRIBUTING.md)** - How to contribute to the project\n- **[Changelog](../../CHANGELOG.md)** - Version update history\n- **[Development Roadmap](../../ROADMAP.md)** - Feature planning and development plan\n\n---\n\n## 💾 Download and Installation\n\n| Platform | Download Link | Description |\n|---------|---------------|-------------|\n| **Windows (x64)** | [📥 Download Installer](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | Supports Windows 10 and above |\n| **macOS (Intel)** | [📥 Download DMG](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | x64 architecture Mac |\n| **macOS (Apple Silicon)** | [📥 Download DMG](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | M1/M2/M3 chip Mac |\n\n👉 [Visit the Releases page to view all versions](https://github.com/viaweb3/cryptocast-desktop/releases)\n\n### 📋 Installation Instructions\n\n**Windows:**\n1. Download `CryptoCast Setup *.exe` from the [Releases page](https://github.com/viaweb3/cryptocast-desktop/releases)\n2. Run the installer and follow the prompts to complete installation\n\n**macOS:**\n1. Download the corresponding architecture `.dmg` file from the [Releases page](https://github.com/viaweb3/cryptocast-desktop/releases)\n   - Intel Mac: Download `*-x64.dmg` or `*-mac.dmg`\n   - Apple Silicon Mac: Download `*-arm64.dmg`\n2. Double-click to open the DMG file and drag `CryptoCast` to the `Applications` folder\n3. On first run, you need to allow it in System Preferences (System Preferences → Security \u0026 Privacy)\n\n\u003e **Note**: The current version is an unsigned build, intended for development and testing purposes only.\n\n### Resolving Unsigned Application Launch Issues\n\nAs the application is not code-signed, the operating system may block it from running. Please follow these steps according to your operating system:\n\n**Windows:**\n1. If you encounter the \"Windows protected your PC\" prompt when running the installer, click \"More info\" in the popup.\n2. Then click \"Run anyway\".\n\n**macOS:**\n\n*Method 1: Shortcut (Recommended)*\n1. Find the CryptoCast application in Finder.\n2. **Right-click** (or hold Control and click) on the application icon.\n3. Select **\"Open\"** from the menu.\n4. In the warning dialog, click **\"Open\"**.\n\n*Method 2: System Settings*\n1. If you encounter the \"Cannot open...\" warning when double-clicking, click \"Cancel\".\n2. Open \"System Settings\" \u003e \"Privacy \u0026 Security\".\n3. Find the blocking prompt at the bottom of the page and click **\"Open Anyway\"**.\n\n\u003e ❓ **If prompted \"App is damaged\"**:\n\u003e This is a common blocking mechanism by macOS for unsigned applications. There are two solutions:\n\u003e\n\u003e *Method 1: Local Installation without root permissions (Recommended)*\n\u003e 1. Drag CryptoCast.app to the user home directory Applications folder (`~/Applications`)\n\u003e 2. Open Terminal and execute the following command (no sudo required):\n\u003e    ```bash\n\u003e    xattr -cr ~/Applications/CryptoCast.app\n\u003e    ```\n\u003e 3. Now you can launch the application normally from the `~/Applications` folder\n\u003e 4. It's recommended to create a Dock icon for the application: drag the application to the Dock bar\n\u003e\n\u003e *Method 2: System-level Installation (requires administrator privileges)*\n\u003e 1. Drag the application to the `/Applications` folder\n\u003e 2. Open Terminal and execute the following command:\n\u003e    ```bash\n\u003e    sudo xattr -cr /Applications/CryptoCast.app\n\u003e    ```\n\u003e 3. Enter the administrator password to open normally\n\n---\n\n## 🛠️ Development Environment Setup\n\n### Prerequisites\n\n- Node.js 24+\n- npm (or yarn/pnpm)\n- Git\n\n### 1. Clone the Project\n\n```bash\ngit clone https://github.com/viaweb3/cryptocast-desktop.git\ncd cryptocast-desktop\n```\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 3. Run in Development Mode\n\n```bash\nnpm run dev\n```\n\n### 4. Build the Application\n\n```bash\n# Build application for current platform\nnpm run build\n\n# Build for specific platforms\nnpm run build:win              # Windows x64\nnpm run build:mac-intel        # macOS Intel (x64)\nnpm run build:mac-arm          # macOS Apple Silicon (arm64)\n```\n\nBuild artifacts are located in the `release/` directory.\n\n### 5. Testing Tool Scripts\n\n```bash\n# Generate EVM test airdrop list (333 addresses)\nnode scripts/generate-evm-airdrop.js\n\n# Generate Solana test airdrop list (333 addresses)\nnode scripts/generate-solana-airdrop.js\n```\n\n---\n\n## 📁 Project Structure\n\n```\ncryptocast-desktop/\n├── 📂 src/\n│   ├── 📂 main/                     # Electron main process (Node.js backend)\n│   │   ├── 📄 index.ts              # Application entry point\n│   │   ├── 📄 preload.ts            # Preload script (IPC security bridge)\n│   │   ├── 📂 database/             # SQLite database\n│   │   │   ├── 📄 db-adapter.ts     # Database adapter\n│   │   │   └── 📄 sqlite-schema.ts  # Database structure and migrations\n│   │   ├── 📂 ipc/                  # IPC communication handlers\n│   │   │   └── 📄 handlers.ts       # Implementation of all IPC channels\n│   │   ├── 📂 services/             # Core business logic\n│   │   │   ├── 📄 CampaignService.ts   # Campaign management\n│   │   │   ├── 📄 WalletService.ts     # Wallet management\n│   │   │   ├── 📄 BlockchainService.ts # Generic blockchain service\n│   │   │   ├── 📄 SolanaService.ts     # Solana-specific service\n│   │   │   ├── 📄 GasService.ts        # Gas estimation service\n│   │   │   └── 📄 ...                # Other services\n│   │   └── 📂 utils/                # Utility functions\n│   │\n│   └── 📂 renderer/                 # Electron renderer process (React frontend)\n│       └── 📂 src/\n│           ├── 📄 App.tsx           # Application root component\n│           ├── 📄 main.tsx          # React entry point\n│           ├── 📂 components/       # UI components\n│           ├── 📂 pages/            # Page-level components\n│           ├── 📂 hooks/            # Custom React Hooks\n│           ├── 📂 contexts/         # React Context\n│           └── 📂 utils/            # Frontend utility functions\n│\n├── 📂 contracts/                    # Smart contracts (Solidity)\n│   ├── 📂 src/\n│   │   └── 📄 BatchAirdropContract.sol # EVM batch airdrop contract\n│   └── 📄 foundry.toml              # Foundry configuration\n│\n├── 📄 package.json                  # Project configuration and dependencies\n├── 📄 vite.config.ts                # Vite configuration\n├── 📄 electron-builder.json         # Electron Builder packaging configuration\n├── 📄 jest.config.mjs               # Jest testing configuration\n```\n\n---\n\n## 🛠️ Technology Stack\n\n### 🎨 Frontend\n- **React**: UI framework\n- **TypeScript**: Type system\n- **Vite**: Build tool\n- **TailwindCSS**: CSS framework\n- **DaisyUI**: TailwindCSS component library\n- **React Router**: Routing\n\n### ⚙️ Backend \u0026 Application Core\n- **Node.js 24+**: Runtime environment\n- **Electron 39.2.2**: Cross-platform desktop application framework\n- **SQLite**: Local database\n- **TypeScript 5.7.3**: Type system\n- **Winston 3.18.3**: Structured logging system\n\n### 🔗 Blockchain\n- **ethers.js**: EVM chain interaction library\n- **@solana/web3.js**: Solana chain interaction library\n- **Foundry**: Solidity development and testing framework\n\n### 🧪 Testing\n- **Jest**: Unit/integration testing\n- **@testing-library/react**: React component testing\n\n---\n\n## 🏗️ Architecture Design\n\n### Core Services\nThe application backend logic is split into multiple services located in `src/main/services/`, including:\n\n- **CampaignService**: Responsible for creating, managing, and executing airdrop campaigns\n- **WalletManagementService / WalletService**: Manages user wallets, including creation, import, and secure storage\n- **ChainManagementService / ChainService**: Manages and connects to different blockchain networks (EVM \u0026 Solana)\n- **ContractService**: Responsible for deploying and interacting with smart contracts\n- **GasService / PriceService**: Estimates transaction fees and retrieves token prices\n- **SolanaService**: Handles all Solana-specific logic\n- **CampaignEstimator / CampaignExecutor**: Responsible for campaign cost estimation and execution, respectively\n\n### Data Storage\nThe application uses **SQLite** as the local database, with table structures defined in `src/main/database/sqlite-schema.ts`.\n\n#### Main Data Tables\n```sql\n-- Campaigns Table\nCREATE TABLE campaigns (\n  id TEXT PRIMARY KEY,\n  name TEXT NOT NULL,\n  chain_type TEXT NOT NULL CHECK (chain_type IN ('evm', 'solana')),\n  chain_id INTEGER,\n  token_address TEXT NOT NULL,\n  status TEXT NOT NULL,\n  total_recipients INTEGER NOT NULL,\n  wallet_address TEXT,\n  contract_address TEXT,\n  ...\n);\n\n-- Recipients Table\nCREATE TABLE recipients (\n  id INTEGER PRIMARY KEY AUTOINCREMENT,\n  campaign_id TEXT NOT NULL,\n  address TEXT NOT NULL,\n  amount TEXT NOT NULL,\n  status TEXT NOT NULL CHECK (status IN ('PENDING', 'PROCESSING', 'SENT', 'FAILED')),\n  tx_hash TEXT,\n  FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE\n);\n\n-- Transactions Table\nCREATE TABLE transactions (\n  id INTEGER PRIMARY KEY AUTOINCREMENT,\n  campaign_id TEXT NOT NULL,\n  tx_hash TEXT NOT NULL UNIQUE,\n  tx_type TEXT NOT NULL,\n  status TEXT NOT NULL,\n  ...\n  FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE\n);\n\n-- Blockchain Networks Table\nCREATE TABLE chains (\n  id INTEGER PRIMARY KEY AUTOINCREMENT,\n  type TEXT NOT NULL CHECK (type IN ('evm', 'solana')),\n  name TEXT NOT NULL UNIQUE,\n  rpc_url TEXT NOT NULL,\n  ...\n);\n```\n\n### Data Storage Location\n- **Windows**: `%APPDATA%\\\\cryptocast\\\\`\n- **macOS**: `~/Library/Application Support/cryptocast/`\n- **Linux**: `~/.config/cryptocast/`\n\n---\n\n## 🧪 Testing\n\n### Run Tests\n\n```bash\n# Run all unit and integration tests\nnpm test\n\n# Generate coverage report\nnpm run test:coverage\n```\n\n---\n\n## 🤝 Contributing\n\nWe welcome all forms of contribution! Please read the **[CONTRIBUTING.md](./CONTRIBUTING.md)** file for details.\n\n---\n\n## 📄 License\n\nThis project is licensed under the [MIT License](../../LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviaweb3%2Fcryptocast-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviaweb3%2Fcryptocast-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviaweb3%2Fcryptocast-desktop/lists"}