How qaravparlaq-afk/nexa-messenger works
NEXA is an early-stage, privacy-first Android and iOS messenger. Its intended user workflow is device identity and prekey setup, authenticated session establishment, encrypted message creation and delivery, then local encrypted persistence and receipt; the sampled backend supports authenticated prekey and relay operations. The graph separates mobile clients, cryptographic protocol stages, and gateway services. Attachments, push, calling, verification/revocation, and wallet capabilities are documented goals, not demonstrated end-to-end implementations in the sampled source. Some subsystem wiring is therefore left unspecified.
Main entry points: main.rs Backend gateway · src/lib.rs Session setup · src/lib.rs Device identity · MainActivity.kt Android app
Components 20
Mobile clients
- Android app
apps/android/app/src/main/java/org/nexa/messenger/MainActivity.kt - iOS app
apps/ios
Secure messaging core
- Device identity
core/identity/src/lib.rs - Prekey primitives
core/identity/src/prekeys.rs - Session setup
core/session/src/lib.rs - Protocol types
core/protocol/src/lib.rs - Message ratchet
core/ratchet/src/lib.rs - Wire envelope
core/envelope/src/lib.rs - Encrypted storage
core/storage/src/lib.rs - Transport frames
core/transport/src/lib.rs
Relay services
- Backend gateway
backend/src/main.rs - Request authentication
backend/src/auth.rs - Prekey directory
backend/src/prekeys.rs - Message relay
backend/src/relay.rs
Planned capabilities
- Encrypted attachments
core - Private push
core - Voice and video
core - Non-custodial wallet
core/wallet/src/lib.rs - Verification and revocation
core/identity/src/lib.rs
Other components
- Messenger user
Connections 19
- Messenger user → Android app: uses
- Messenger user → iOS app: uses
- Device identity → Prekey primitives: creates keys
- Session setup → Device identity: uses identity
- Session setup → Protocol types: validates bundles
- Message ratchet → Session setup: uses root
- Wire envelope → Protocol types: encodes messages
- Encrypted storage → Message ratchet: stores snapshots
- Backend gateway → Request authentication: authenticates requests
- Backend gateway → Prekey directory: serves prekeys
- Backend gateway → Message relay: relays messages
- Backend gateway → Transport frames: frames websocket data
- Encrypted attachments → Wire envelope: planned encrypted payloads
- Private push → Backend gateway: planned notifications
- Voice and video → Android app: planned client feature
- Voice and video → iOS app: planned client feature
- Non-custodial wallet → Android app: planned client feature
- Non-custodial wallet → iOS app: planned client feature
- Verification and revocation → Device identity: planned lifecycle feature