architecture
2
总安装量
1
周安装量
#73768
全站排名
安装命令
npx skills add https://github.com/keychat-io/keychat-app --skill architecture
Agent 安装分布
mcpjam
1
claude-code
1
replit
1
junie
1
windsurf
1
zencoder
1
Skill 文档
Keychat is a secure messaging app with a unique architecture. When explaining or working with the codebase, understand these key components:
Core Technologies
| Technology | Purpose | Implementation |
|---|---|---|
| Nostr Protocol | Message delivery/storage | lib/nostr-core/, WebSocket connections |
| Signal Protocol | 1:1 E2E encryption | api_signal.rs via FFI |
| MLS Protocol | Group E2E encryption | api_mls.rs via FFI |
| Bitcoin Ecash | Micropayments to relays | api_cashu.rs, keychat_ecash/ |
Package Structure
packages/
âââ app/ # Main Flutter app
âââ keychat_ecash/ # Ecash wallet functionality
âââ keychat_rust_ffi_plugin/ # Native crypto via Rust
Key Services (packages/app/lib/service/)
- signal_chat.service.dart – Signal protocol session management
- mls_group.service.dart – MLS group key operations
- websocket.service.dart – Nostr relay connections
- chat.service.dart – High-level message routing
- relay.service.dart – Relay management
- identity.service.dart – User identity management
State Management
Uses GetX pattern:
- Controllers in
lib/controller/ - Services are singleton instances
- Reactive state with
.obsobservables
Database
Uses Isar (NoSQL for Flutter):
- Models in
lib/models/ - Models use
@collectionannotation - Generated code via build_runner (*.g.dart, *.isar.dart)
Rust FFI Bridge
Native crypto operations use flutter_rust_bridge:
- Rust code:
packages/keychat_rust_ffi_plugin/rust/src/ - Generated Dart bindings:
packages/keychat_rust_ffi_plugin/lib/ - Key APIs: Cashu, Nostr, Signal, MLS
Message Flow
- User composes message
- Signal/MLS encrypts content
- Message wrapped in Nostr event
- Ecash stamp attached (if relay requires payment)
- Sent via WebSocket to Nostr relay
- Recipient receives, decrypts, displays