PaperPhone IM
A WeChat-style, end-to-end encrypted instant messaging application.
Security
- Stateless ECDH + XSalsa20-Poly1305 — per-message ephemeral keys, forward secrecy without session state
- Zero-knowledge server — only ciphertext is stored; private keys never leave the device
- Four-tier key persistence — memory → localStorage → sessionStorage → IndexedDB, survives WebView restarts
Features
- 📹 Video & Voice Calls — WebRTC P2P (1:1) + Mesh (group up to 6)
- 👥 Group Chat — up to 2000 members, plain-text messaging, Do Not Disturb mode, member management
- 🌐 Moments — social feed with text + up to 9 photos or 1 video (≤ 10 min), likes, comments, tag-based visibility
- 👤 User Profile — contact profile page with Moments feed, bidirectional privacy controls (hide their / hide mine)
- 📰 Timeline — Xiaohongshu-style public feed with masonry layout, up to 50 images/videos + 2000-char text, anonymous posting, likes & comments
- ⏱️ Auto-Delete Messages — 5 tiers: never / 1 day / 3 days / 1 week / 1 month
- 🔔 Push Notifications — Web Push (VAPID) + OneSignal dual-channel
- 🌐 Multi-language — Chinese, English, Japanese, Korean, French, German, Russian, Spanish
- 📱 iOS PWA — "Add to Home Screen" via Safari, no enterprise cert needed
- 💬 Rich messaging: text, images, video, document files (PDF/DOCX/XLSX etc. with type icons), voice, 200+ emoji (8 categories), Telegram sticker packs, delivery receipts, typing indicators
- 🗂️ Cloudflare R2 file storage (images, voice & video)
- 🏷️ Friend Tags — tag-based contact filtering & Moments visibility control
- 🎭 Telegram Sticker Packs — dynamic sticker packs with configurable pack list, unlimited quantity
- 🔑 Two-Factor Auth (2FA) — Google Authenticator TOTP, 8 recovery codes
- 📷 QR Code Scan & Share — scan QR to add friends or join groups; group QR codes with configurable expiry (1 week / 1 month / 3 months)
After Deployment
- Open the domain assigned to the client service.
- Register an account — cryptographic keys are generated locally on your device.
- (Optional) Configure Cloudflare R2 for image/voice/video uploads — set
R2_* variables on the server service.
- (Optional) Configure Cloudflare TURN for cross-network video calls — set
CF_CALLS_APP_ID and CF_CALLS_APP_SECRET.
- (Optional) Enable push notifications — set
VAPID_* variables for Web Push.
- (Optional) Enable Telegram sticker packs — set
TELEGRAM_BOT_TOKEN and optionally STICKER_PACKS.
Docker Hub Images
facilisvelox/paperphone-client:latest
facilisvelox/paperphone-server:latest