How noormohammadiazad/textor works
Textor is a browser-based, end-to-end encrypted messenger with no operated backend. The main workflow runs from the user interface through app state and the messenger engine: messages are sealed, sent through public relays (and optionally direct WebRTC), then persisted in the locally encrypted vault. The graph also preserves identity and restore, attachments, calls, groups, and location as distinct product capabilities. Edges follow the README’s architecture diagrams and workflow, or visible source references; unsampled feature wiring is omitted or marked unverified.
Main entry points: messenger.ts Messenger engine · store.ts App store · App.tsx App shell · ChatView.tsx Chat screens
Components 21
Browser app
- App shell
src/app/App.tsx - Chat screens
src/ui/screens/ChatView.tsx - App store
src/app/store.ts
Messaging and privacy
- Messenger engine
src/core/engine/messenger.ts - Gift wrapping
src/core/crypto/giftwrap.ts - Wire protocol
src/core/models/protocol.ts - Nostr transport
src/core/transport/nostrTransport.ts - Relay pool
src/core/transport/relayPool.ts - Direct WebRTC
src/core/transport/webrtc/directManager.ts
Identity and storage
- Identity keys
src/core/identity/keys.ts - Vault repository
src/core/vault/repo.ts - Encrypted vault
src/core/vault/vault.ts - IndexedDB
src/core/vault/db.ts - Backup and restore
src/core/vault/exportImport.ts
Communication features
- Media transfer
src/core/engine/blobTransfer.ts - Voice and video calls
src/core/calls/callManager.ts - Secure groups
src/core/mls/marmot.ts - Location sharing
src/core/location/sharer.ts
Other components
- User
- Public relays
- Contact device
Connections 21
- User → App shell: uses
README.md - App shell → Chat screens: shows
src/app/App.tsx - Chat screens → App store: reads and updates
src/ui/screens/ChatView.tsx - App store → Messenger engine: commands
src/app/store.ts - Messenger engine → Vault repository: persists through
README.md - Vault repository → Encrypted vault: uses
README.md - Encrypted vault → IndexedDB: stores sealed data
README.md - Messenger engine → Gift wrapping: wraps messages
src/core/engine/messenger.ts - Messenger engine → Nostr transport: sends and receives
README.md - Nostr transport → Relay pool: uses
README.md - Relay pool → Public relays: connects to
README.md - Messenger engine → Direct WebRTC: dispatches directly
src/core/engine/messenger.ts - Direct WebRTC → Contact device: opens WebRTC
README.md - Messenger engine → Wire protocol: handles frames
src/core/engine/messenger.ts - App store → Identity keys: uses identity
src/app/store.ts - User → Identity keys: creates identity
README.md - User → Backup and restore: restores with words
README.md - Messenger engine → Media transfer: transfers media
src/core/engine/messenger.ts - App store → Voice and video calls: loads call manager
src/app/store.ts - Messenger engine → Secure groups: supports secure groups
- Messenger engine → Location sharing: supports location sharing