Private messaging built on Zcash shielded transactions.
ZCHAT is a privacy-first messaging application that uses Zcash's shielded transaction memo field to send encrypted messages. Messages are stored on the Zcash blockchain, providing:
- End-to-end encryption - Messages encrypted with ECDH + AES-256-GCM
- Blockchain privacy - Shielded transactions hide sender, recipient, and content
- No central server - Messages exist only on the blockchain
- Self-destructing messages - Remote destruction via blockchain transactions
| Platform | Status | Notes |
|---|---|---|
| Android | Primary | Forked from Zashi wallet |
| iOS | Planned | After NOSTR integration |
| Web | Secondary | Basic messaging only |
- Direct messaging via Zcash memos
- Group messaging with shared key encryption
- Time-locked messages (scheduled, block-height, payment-gated)
- Read receipts and reactions
- Message chunking for long content (>400 bytes)
- Remote account destruction
- File and image sharing (via Blossom)
- Audio messages
- Voice and video calls (WebRTC)
- Typing indicators
- Online presence
BIP39 Seed Phrase (24 words)
|
+--- m/44'/133'/0'/0/0 --> Zcash unified address
| (payments + private messages)
|
+--- m/44'/1237'/0'/0/0 --> NOSTR secp256k1 keypair
(files + calls + presence)
One seed phrase provides both identities, cryptographically linked.
/home/yourt/zchat/ # Main monorepo
+-- apps/
| +-- backend/ # Node.js API (port 4000)
| +-- web/ # Next.js frontend (port 3000)
| +-- landing/ # Landing page (zsend.xyz)
+-- packages/
| +-- wallet-core/ # Rust WASM wallet
+-- docs/ # Documentation
/home/yourt/zchat-android/ # Android app (Zashi fork)
| Document | Purpose |
|---|---|
| CLAUDE.md | Project context, infrastructure, commands |
| PRODUCT.md | Product vision, features, roadmap |
| ARCHITECTURE.md | Technical architecture, protocols |
| ANDROID_FIX_PLAN.md | Current priorities, NOSTR integration |
| DEVELOPMENT_STANDARDS.md | Coding standards (TypeScript/Kotlin) |
| DECISIONS.md | Architectural decision log |
| ISSUES_TO_FIX.md | Audit findings, prioritized bugs |
- Node.js 18+
- pnpm
- Rust (for WASM wallet)
- Android Studio (for mobile development)
cd apps/backend
pnpm install
npx prisma generate
pnpm devcd apps/web
pnpm install
pnpm devcd /home/yourt/zchat-android
ANDROID_HOME="$HOME/android-sdk" ./gradlew assembleDebug| Service | URL |
|---|---|
| Landing Page | https://zsend.xyz |
| Web App | https://app.zsend.xyz |
| API | https://api.zsend.xyz |
Messages use the ZMSG protocol (v4):
ZMSG|4|<type>|<conv_id>|<sender_hash>|<payload>
Types: DM (direct), RXN (reaction), RCV (receipt), RPL (reply), REQ (request), CHK (chunk), STT (status), GRP (group)
See ARCHITECTURE.md for full protocol specification.
- Seeds stored in EncryptedSharedPreferences (Android)
- E2E encryption: ECDH (secp256r1) + AES-256-GCM
- Key derivation: HKDF with HMAC-SHA256 (v2)
- No seed transmission to servers
This is a private project. Contact the maintainer for access.
Proprietary. All rights reserved.
Built with Zcash shielded transactions for true privacy.