https://github.com/viaweb3/cryptocast-desktop
CryptoCast Desktop - Multi-chain Batch Airdrop & 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.
https://github.com/viaweb3/cryptocast-desktop
airdrop blockchain cryptocurrency desktop desktop-app electron ethereum evm solana web3
Last synced: 4 months ago
JSON representation
CryptoCast Desktop - Multi-chain Batch Airdrop & 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.
- Host: GitHub
- URL: https://github.com/viaweb3/cryptocast-desktop
- Owner: viaweb3
- Created: 2025-11-19T06:11:03.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-12-18T01:31:09.000Z (6 months ago)
- Last Synced: 2025-12-21T09:21:29.360Z (6 months ago)
- Topics: airdrop, blockchain, cryptocurrency, desktop, desktop-app, electron, ethereum, evm, solana, web3
- Language: HTML
- Homepage:
- Size: 4.76 MB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# CryptoCast Desktop - Professional Batch Airdrop Tool
> π Multi-chain Cryptocurrency Batch Reward Distribution Platform - Secure, Efficient, and User-Friendly Desktop Application
**π Languages / θ―θ¨ / Idiomas / Langues / Sprachen / ΡΠ·ΡΠΊΠΈ / Ψ§ΩΩΨΊΨ© / μΈμ΄ / θ¨θͺ / TiαΊΏng Viα»t / TΓΌrkΓ§e:**
[πΊπΈ 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)
[](../../LICENSE)
[](../../.github/workflows/build.yml)
[](../../.github/workflows/build.yml)
---
## π Project Overview
CryptoCast 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.
### β¨ Core Features
#### π **Multi-Chain Support**
- **EVM Chains**: Ethereum, Polygon, BSC, Arbitrum, Optimism, Base, Avalanche, etc.
- **Solana**: Mainnet and devnet support
- **Smart Contracts**: Pre-deployed batch transfer contracts, optimized for gas fees
#### π¦ **Batch Operations**
- **Large-Scale Processing**: Import addresses and amounts from CSV files
- **Batch Transfers**: ERC-20 and Solana (SPL) Token batch sending
- **Real-Time Progress**: Visualized distribution progress and status monitoring
#### π **Security and Privacy**
- **Local-First**: All sensitive data (such as private keys) are encrypted and stored locally, never passing through any server
- **Isolated Wallets**: Each campaign uses an independent derived wallet, isolating fund risks
- **Fully Offline**: Core functions can operate in offline mode (transaction signing, etc.)
#### π‘ **User Experience**
- **Cross-Platform**: Supports Windows and macOS (Intel & Apple Silicon)
- **Intuitive Interface**: Modern design with simple and clear interaction
- **Cost Estimation**: Real-time gas fee and total cost estimation
- **Transaction History**: Complete transaction history and status tracking
- **Structured Logging**: Winston logging system for easy debugging and issue tracking
---
## π Documentation
- **[Architecture Design](../../ARCHITECTURE.md)** - System architecture and technical decisions
- **[Development Guide](../../DEVELOPMENT.md)** - Development environment setup and workflow
- **[API Documentation](../../API_DOCS.md)** - Internal API documentation
- **[Testing Guide](../../TESTING.md)** - Testing strategy and execution
- **[Contributing Guide](./CONTRIBUTING.md)** - How to contribute to the project
- **[Changelog](../../CHANGELOG.md)** - Version update history
- **[Development Roadmap](../../ROADMAP.md)** - Feature planning and development plan
---
## πΎ Download and Installation
| Platform | Download Link | Description |
|---------|---------------|-------------|
| **Windows (x64)** | [π₯ Download Installer](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | Supports Windows 10 and above |
| **macOS (Intel)** | [π₯ Download DMG](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | x64 architecture Mac |
| **macOS (Apple Silicon)** | [π₯ Download DMG](https://github.com/viaweb3/cryptocast-desktop/releases/latest) | M1/M2/M3 chip Mac |
π [Visit the Releases page to view all versions](https://github.com/viaweb3/cryptocast-desktop/releases)
### π Installation Instructions
**Windows:**
1. Download `CryptoCast Setup *.exe` from the [Releases page](https://github.com/viaweb3/cryptocast-desktop/releases)
2. Run the installer and follow the prompts to complete installation
**macOS:**
1. Download the corresponding architecture `.dmg` file from the [Releases page](https://github.com/viaweb3/cryptocast-desktop/releases)
- Intel Mac: Download `*-x64.dmg` or `*-mac.dmg`
- Apple Silicon Mac: Download `*-arm64.dmg`
2. Double-click to open the DMG file and drag `CryptoCast` to the `Applications` folder
3. On first run, you need to allow it in System Preferences (System Preferences β Security & Privacy)
> **Note**: The current version is an unsigned build, intended for development and testing purposes only.
### Resolving Unsigned Application Launch Issues
As the application is not code-signed, the operating system may block it from running. Please follow these steps according to your operating system:
**Windows:**
1. If you encounter the "Windows protected your PC" prompt when running the installer, click "More info" in the popup.
2. Then click "Run anyway".
**macOS:**
*Method 1: Shortcut (Recommended)*
1. Find the CryptoCast application in Finder.
2. **Right-click** (or hold Control and click) on the application icon.
3. Select **"Open"** from the menu.
4. In the warning dialog, click **"Open"**.
*Method 2: System Settings*
1. If you encounter the "Cannot open..." warning when double-clicking, click "Cancel".
2. Open "System Settings" > "Privacy & Security".
3. Find the blocking prompt at the bottom of the page and click **"Open Anyway"**.
> β **If prompted "App is damaged"**:
> This is a common blocking mechanism by macOS for unsigned applications. There are two solutions:
>
> *Method 1: Local Installation without root permissions (Recommended)*
> 1. Drag CryptoCast.app to the user home directory Applications folder (`~/Applications`)
> 2. Open Terminal and execute the following command (no sudo required):
> ```bash
> xattr -cr ~/Applications/CryptoCast.app
> ```
> 3. Now you can launch the application normally from the `~/Applications` folder
> 4. It's recommended to create a Dock icon for the application: drag the application to the Dock bar
>
> *Method 2: System-level Installation (requires administrator privileges)*
> 1. Drag the application to the `/Applications` folder
> 2. Open Terminal and execute the following command:
> ```bash
> sudo xattr -cr /Applications/CryptoCast.app
> ```
> 3. Enter the administrator password to open normally
---
## π οΈ Development Environment Setup
### Prerequisites
- Node.js 24+
- npm (or yarn/pnpm)
- Git
### 1. Clone the Project
```bash
git clone https://github.com/viaweb3/cryptocast-desktop.git
cd cryptocast-desktop
```
### 2. Install Dependencies
```bash
npm install
```
### 3. Run in Development Mode
```bash
npm run dev
```
### 4. Build the Application
```bash
# Build application for current platform
npm run build
# Build for specific platforms
npm run build:win # Windows x64
npm run build:mac-intel # macOS Intel (x64)
npm run build:mac-arm # macOS Apple Silicon (arm64)
```
Build artifacts are located in the `release/` directory.
### 5. Testing Tool Scripts
```bash
# Generate EVM test airdrop list (333 addresses)
node scripts/generate-evm-airdrop.js
# Generate Solana test airdrop list (333 addresses)
node scripts/generate-solana-airdrop.js
```
---
## π Project Structure
```
cryptocast-desktop/
βββ π src/
β βββ π main/ # Electron main process (Node.js backend)
β β βββ π index.ts # Application entry point
β β βββ π preload.ts # Preload script (IPC security bridge)
β β βββ π database/ # SQLite database
β β β βββ π db-adapter.ts # Database adapter
β β β βββ π sqlite-schema.ts # Database structure and migrations
β β βββ π ipc/ # IPC communication handlers
β β β βββ π handlers.ts # Implementation of all IPC channels
β β βββ π services/ # Core business logic
β β β βββ π CampaignService.ts # Campaign management
β β β βββ π WalletService.ts # Wallet management
β β β βββ π BlockchainService.ts # Generic blockchain service
β β β βββ π SolanaService.ts # Solana-specific service
β β β βββ π GasService.ts # Gas estimation service
β β β βββ π ... # Other services
β β βββ π utils/ # Utility functions
β β
β βββ π renderer/ # Electron renderer process (React frontend)
β βββ π src/
β βββ π App.tsx # Application root component
β βββ π main.tsx # React entry point
β βββ π components/ # UI components
β βββ π pages/ # Page-level components
β βββ π hooks/ # Custom React Hooks
β βββ π contexts/ # React Context
β βββ π utils/ # Frontend utility functions
β
βββ π contracts/ # Smart contracts (Solidity)
β βββ π src/
β β βββ π BatchAirdropContract.sol # EVM batch airdrop contract
β βββ π foundry.toml # Foundry configuration
β
βββ π package.json # Project configuration and dependencies
βββ π vite.config.ts # Vite configuration
βββ π electron-builder.json # Electron Builder packaging configuration
βββ π jest.config.mjs # Jest testing configuration
```
---
## π οΈ Technology Stack
### π¨ Frontend
- **React**: UI framework
- **TypeScript**: Type system
- **Vite**: Build tool
- **TailwindCSS**: CSS framework
- **DaisyUI**: TailwindCSS component library
- **React Router**: Routing
### βοΈ Backend & Application Core
- **Node.js 24+**: Runtime environment
- **Electron 39.2.2**: Cross-platform desktop application framework
- **SQLite**: Local database
- **TypeScript 5.7.3**: Type system
- **Winston 3.18.3**: Structured logging system
### π Blockchain
- **ethers.js**: EVM chain interaction library
- **@solana/web3.js**: Solana chain interaction library
- **Foundry**: Solidity development and testing framework
### π§ͺ Testing
- **Jest**: Unit/integration testing
- **@testing-library/react**: React component testing
---
## ποΈ Architecture Design
### Core Services
The application backend logic is split into multiple services located in `src/main/services/`, including:
- **CampaignService**: Responsible for creating, managing, and executing airdrop campaigns
- **WalletManagementService / WalletService**: Manages user wallets, including creation, import, and secure storage
- **ChainManagementService / ChainService**: Manages and connects to different blockchain networks (EVM & Solana)
- **ContractService**: Responsible for deploying and interacting with smart contracts
- **GasService / PriceService**: Estimates transaction fees and retrieves token prices
- **SolanaService**: Handles all Solana-specific logic
- **CampaignEstimator / CampaignExecutor**: Responsible for campaign cost estimation and execution, respectively
### Data Storage
The application uses **SQLite** as the local database, with table structures defined in `src/main/database/sqlite-schema.ts`.
#### Main Data Tables
```sql
-- Campaigns Table
CREATE TABLE campaigns (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
chain_type TEXT NOT NULL CHECK (chain_type IN ('evm', 'solana')),
chain_id INTEGER,
token_address TEXT NOT NULL,
status TEXT NOT NULL,
total_recipients INTEGER NOT NULL,
wallet_address TEXT,
contract_address TEXT,
...
);
-- Recipients Table
CREATE TABLE recipients (
id INTEGER PRIMARY KEY AUTOINCREMENT,
campaign_id TEXT NOT NULL,
address TEXT NOT NULL,
amount TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('PENDING', 'PROCESSING', 'SENT', 'FAILED')),
tx_hash TEXT,
FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE
);
-- Transactions Table
CREATE TABLE transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
campaign_id TEXT NOT NULL,
tx_hash TEXT NOT NULL UNIQUE,
tx_type TEXT NOT NULL,
status TEXT NOT NULL,
...
FOREIGN KEY (campaign_id) REFERENCES campaigns (id) ON DELETE CASCADE
);
-- Blockchain Networks Table
CREATE TABLE chains (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL CHECK (type IN ('evm', 'solana')),
name TEXT NOT NULL UNIQUE,
rpc_url TEXT NOT NULL,
...
);
```
### Data Storage Location
- **Windows**: `%APPDATA%\\cryptocast\\`
- **macOS**: `~/Library/Application Support/cryptocast/`
- **Linux**: `~/.config/cryptocast/`
---
## π§ͺ Testing
### Run Tests
```bash
# Run all unit and integration tests
npm test
# Generate coverage report
npm run test:coverage
```
---
## π€ Contributing
We welcome all forms of contribution! Please read the **[CONTRIBUTING.md](./CONTRIBUTING.md)** file for details.
---
## π License
This project is licensed under the [MIT License](../../LICENSE).