diff --git a/README.md b/README.md index 21bc758..58574e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,149 @@ -# dart-torchat -A dart implementation of a full node that can run on any device with any architecture. \ No newline at end of file +# TorChat Dart Node + +
+ +---- + +A full, cross-platform **Tor/Arti-powered** TorChat written 100 % in Dart. +Spin it up on Windows, macOS, Linuxβeven mobile or Raspberry Piβno C tool-chain, no hassle. + +> **TL;DR** +> `dart pub global activate whisper_node` +> `whisper_node run` +> VoilΓ : a fully-functional relay + client with gRPC endpoints and a sweet high-level SDK. + +--- + +## π What Is It? + +TorChat-Dart is the **reference implementation** of the TorChat protocol in pure Dart. +It exposes: + +| Layer | Purpose | +|-------|---------| +| **gRPC API** | Full power, language-agnostic. Auto-generated protobuf docs & stubs. | +| **Dart SDK** | High-level classes (`WhisperClient`, `WhisperRelay`, `GroupChat`, β¦). | +| **Tor/Arti wrapper** | Boots a hidden service automatically; no Tor install required. | + +Perfect for bots, CLIs, desktop apps, or embedding in Flutter. + +--- + +## π Features + +* **Multi-platform** β runs anywhere Dart VM runs β +* **Automatic Tor/Arti** β `dart run whisper_node:tor` launches a hidden service for you β +* **gRPC over onion** β multiplexed, binary, schema-safe β +* **Envelope store-and-forward** β offline delivery with spam-PoW β +* **Group chat** β federated membership & signed admin events β +* **Identity graph** β user profiles + attestations β +* **Pluggable back-end** β swap LMDB β Hive β SQLite with one flag β + +--- + +## π¦ Installation + +```bash +# 1. Install Dart β₯ 3.4 +# 2. Install TorChat globally +dart pub global activate whisper_node +# 3. Run a node +whisper_node run +``` + +First launch will: + +1. Generate an Ed25519 keypair. +2. Start Arti & publish `xxxxxx.onion`. +3. Sync seed-peers and begin relaying. + +--- + +## π§ Configuration + +`whisper_node.yaml` (auto-created in `$HOME/.whisper_node/`): + +```yaml +listen_port: 20900 +data_dir: ~/.whisper_node/data +tor: + enabled: true + socks_port: 9050 # 0 = random +storage: + backend: hive # hive | sqlite | lmdb +pow: + difficulty: 20 # leading zero bits +``` + +Change, save, restart β settings hot-reload. + +--- + +## π gRPC & Protobuf Docs + +- **Protos** live in [`/proto`](proto/) and are versioned in this repo. +- `make protodocs` autogenerates HTML docs for every RPC & message. +- Language stubs: `dart run build_runner` (Dart) or `buf generate` (all major languages). + +### Quick test with `grpcurl` + +```bash +grpcurl -plaintext -protoset out/descriptor.pb \ + -d '{"value":"