Skip to content

untreu2/qiqstr

Repository files navigation

qiqstr ─ Cross-platform Nostr client

Fast, easy-to-use, and complete Nostr client with built-in Bitcoin wallet.

Supported NIPs

NIP Description
NIP-01 Basic protocol flow description
NIP-02 Follow List
NIP-05 Mapping Nostr keys to DNS-based internet identifiers
NIP-06 Basic key derivation from mnemonic seed phrase
NIP-09 Event Deletion Request
NIP-10 Text Notes and Threads
NIP-17 Private Direct Messages
NIP-18 Reposts
NIP-19 bech32-encoded entities
NIP-21 nostr: URI scheme
NIP-23 Long-form Content
NIP-25 Reactions
NIP-27 Text Note References
NIP-44 Encrypted Payloads (Versioned)
NIP-51 Lists
NIP-56 Reporting
NIP-57 Lightning Zaps
NIP-59 Gift Wrap
NIP-62 Request to Vanish
NIP-65 Relay List Metadata
NIP-04 Direct Messages (used by NWC)
NIP-47 Nostr Wallet Connect
NIP-77 Negentropy Syncing
NIP-98 HTTP Auth

Supported Event Kinds

Kind Description
0 User Metadata
1 Text Note
3 Follow List
5 Event Deletion
6 Repost
7 Reaction
14 Direct Message (rumor)
15 File Message (rumor)
62 Request to Vanish
1984 Reporting
1059 Gift Wrap
9734 Zap Request
9735 Zap Receipt
23194 NWC Request
23195 NWC Response
10000 Mute List
10001 Pin List
10002 Relay List Metadata
24242 Blossom Auth
27235 HTTP Auth
30000 Follow Sets
30001 Bookmark List
30023 Long-form Article

Tech Stack

Component Technology
UI Flutter
State management flutter_bloc
Native layer Rust via flutter_rust_bridge
Nostr protocol nostr-sdk 0.44 (Rust)
Local database LMDB via nostr-lmdb
Secure storage flutter_secure_storage
Routing go_router
DI get_it

Architecture

Layered architecture with strict dependency direction:

UI -> Presentation -> Data -> Domain
  • Domain -- Entities and mappers, no framework imports
  • Data -- Repositories, services, sync logic
  • Presentation -- BLoCs with events and states
  • UI -- Screens and widgets

All cryptographic operations, event signing, relay communication, NIP-44 encryption, NIP-17 gift wrapping, NIP-19 encoding, and database access run in Rust. The Dart side interacts through auto-generated bridge code.

Building

Prerequisites: Flutter SDK, Rust toolchain, and flutter_rust_bridge CLI.

flutter pub get
flutter_rust_bridge_codegen generate
flutter run

About

Cross-platform Nostr client

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors