Imported from nostr-net/nostrify-rs (
AGENTS.md). Install upstream withnpx skills add nostr-net/nostrify-rs. Copyright stays with the author.
Nostrify-RS Development Resources
This document contains all development resources, libraries, documentation links, and references needed for building nostrify-rs.
Core Projects
Nostrify (TypeScript/Deno) - Reference Implementation
- Repository: https://gitlab.com/soapbox-pub/nostrify
- Website: https://nostrify.dev
- Documentation: https://nostrify.dev/start/
- JSR Packages: https://jsr.io/@nostrify
- Type Definitions: https://jsr.io/@nostrify/types
- License: MIT
Key Resources:
- Relay documentation: https://nostrify.dev/relay/
- Relay Pool: https://nostrify.dev/relay/pool
- Storage: https://nostrify.dev/store/
- Uploaders: https://nostrify.dev/upload/
- React Integration: https://nostrify.dev/react
Dioxus Framework - UI Layer
- Repository: https://github.com/DioxusLabs/dioxus
- Website: https://dioxuslabs.com
- Tutorial: https://dioxuslabs.com/learn/0.7/tutorial
- API Documentation: https://docs.rs/dioxus
- Examples: https://github.com/DioxusLabs/dioxus/tree/main/examples
- Discord Community: https://discord.gg/XgGxMSkvUM
- License: MIT/Apache 2.0
CLI Installation:
cargo binstall dioxus-cli@0.7.0
Learning Resources:
- LogRocket Tutorial: "Using Dioxus with Rust to build performant single-page apps" (https://blog.logrocket.com/using-dioxus-rust-build-single-page-apps/)
- Generalist Programmer Guide: "dioxus Rust Crate: Complete Guide & Examples" (https://generalistprogrammer.com/tutorials/dioxus-rust-crate-guide)
rust-nostr - Protocol Layer
- Repository: https://github.com/rust-nostr/nostr
- Documentation: https://rust-nostr.org
- API Documentation: https://docs.rs/nostr-sdk/latest/nostr_sdk
- Examples: https://github.com/rust-nostr/nostr/tree/master/crates/nostr-sdk/examples
- Changelog: https://rust-nostr.org/changelog.html
- GitHub Discussions: https://github.com/rust-nostr/nostr/discussions
- Status: ALPHA (breaking API changes possible)
Key Crates:
nostr: Core protocol (https://docs.rs/nostr)nostr-sdk: High-level client (https://docs.rs/nostr-sdk)nostr-relay-pool: Relay management (https://docs.rs/nostr-relay-pool)nostr-database: Storage backends (https://docs.rs/nostr-database)nostr-connect: NIP-46 remote signing (https://docs.rs/nostr-connect)nostr-blossom: File storage (https://docs.rs/nostr-blossom)nwc: Nostr Wallet Connect (https://crates.io/crates/nwc)
Rust Dependencies
Nostr Protocol
nostr = "0.39"
nostr-sdk = "0.39"
nostr-relay-pool = "0.39"
nostr-database = "0.39"
nostr-connect = "0.39"
nostr-blossom = "0.39"
nwc = "0.39" # Nostr Wallet Connect (NIP-47)
UI Framework
dioxus = "0.7"
dioxus-web = "0.7"
dioxus-desktop = "0.7"
dioxus-mobile = "0.7"
dioxus-router = "0.7"
Async Runtime
tokio = { version = "1", features = ["full"] }
futures = "0.3"
async-trait = "0.1"
async-stream = "0.3"
Database
sqlx = { version = "0.8", features = ["sqlite", "postgres", "runtime-tokio"] }
sled = "0.34" # Alternative embedded DB
Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Error Handling
anyhow = "1"
thiserror = "1"
HTTP & Web
reqwest = { version = "0.12", features = ["json", "multipart"] }
axum = "0.7" # For fullstack features with Dioxus
Logging
tracing = "0.1"
tracing-subscriber = "0.3"
Nostr Protocol Resources
NIP Specifications
- NIPs Repository: https://github.com/nostr-protocol/nips
- NIPs Documentation: https://nips.nostr.com
- NIPs (Alternative): https://nostr-nips.com
- Learn Nostr: https://learnnostr.org
- LearnNostr NIPs: https://learnnostr.org/concepts/nips
- E2Encrypted Nostr Reference: https://www.e2encrypted.com/nostr/nips/
Nostr Protocol
- Main Site: https://nostr.com
- Nostr Protocol Explanation: https://nostr.how/en/the-protocol
- The Bitcoin Manual - NIPs: https://thebitcoinmanual.com/articles/nostr-implementation-possibilities/
Community & Tools
- Awesome Nostr: https://github.com/aljazceru/awesome-nostr
- Nostr-tools (JS Reference): https://github.com/nbd-wtf/nostr-tools
- NDK (Nostr Development Kit): Nostr Development Kit for TypeScript
Nostr Wallet Connect (NWC)
NIP-47 Resources
- NIP-47 Specification: https://nips.nostr.com/47
- nwc Crate: https://crates.io/crates/nwc
- nwc Documentation: https://docs.rs/nwc
Implementation Notes
NWC (Nostr Wallet Connect) enables Lightning wallet integration via NIP-47. rust-nostr provides native support through the nwc crate.
Key Features:
- Lightning invoice payments
- Wallet balance queries
- Transaction history
- No Alby-specific integration needed (generic NWC support)
Database Backends
SQLite
- SQLx SQLite Docs: https://docs.rs/sqlx/latest/sqlx/sqlite/index.html
- Rusqlite (Alternative): https://docs.rs/rusqlite
PostgreSQL
- SQLx PostgreSQL Docs: https://docs.rs/sqlx/latest/sqlx/postgres/index.html
LMDB
- LMDB Crate: https://docs.rs/lmdb
- Lightning Memory-Mapped Database: http://www.lmdb.tech/
IndexedDB (WASM)
- Indexed DB Crate: https://docs.rs/indexed_db_futures
- rexie (IndexedDB): https://docs.rs/rexie
nostrdb
- nostrdb: Optimized Nostr database backend (included in rust-nostr)
Cross-Platform Development
WebAssembly (WASM)
- wasm-bindgen: https://rustwasm.github.io/wasm-bindgen/
- wasm-pack: https://rustwasm.github.io/wasm-pack/
- web-sys: https://docs.rs/web-sys
- js-sys: https://docs.rs/js-sys
Mobile Development
Android:
- Dioxus Android Setup: https://dioxuslabs.com/learn/0.7/getting_started/mobile
- Android NDK: https://developer.android.com/ndk
iOS:
- Dioxus iOS Setup: https://dioxuslabs.com/learn/0.7/getting_started/mobile
- iOS Keychain: Platform-specific signing integration
Desktop
- Dioxus Desktop: https://dioxuslabs.com/learn/0.7/getting_started/desktop
- Tauri (Alternative): https://tauri.app/
File Storage & Upload
Blossom Protocol
- Blossom Spec: Decentralized file storage for Nostr
- nostr-blossom Crate: https://docs.rs/nostr-blossom
NIP-96 HTTP File Storage
- NIP-96 Specification: https://nips.nostr.com/96
- nostr-http-file-storage Crate: Included in rust-nostr
Multipart Upload
- reqwest multipart: https://docs.rs/reqwest/latest/reqwest/multipart/index.html
Security & Cryptography
Key Management
- Key Derivation (BIP39): Mnemonic seed phrases
- BIP32: Hierarchical Deterministic Wallets
- nostr-keyring: Secure key storage
Signing
- Schnorr Signatures: Used by Nostr (secp256k1)
- Hardware Wallets: Future integration possibility
Testing & Development
Testing Frameworks
[dev-dependencies]
tokio-test = "0.4"
mockall = "0.12" # Mocking
proptest = "1" # Property-based testing
criterion = "0.5" # Benchmarking
Development Tools
- cargo-watch: Auto-rebuild on file changes
- cargo-nextest: Faster test runner
- cargo-deny: Dependency checking
- cargo-audit: Security vulnerability scanning
API Documentation Tools
Documentation
# Generate and open docs
cargo doc --open --no-deps
Doc Hosting
- docs.rs: Automatic Rust documentation hosting
- GitHub Pages: Custom documentation hosting
Community & Support
Dioxus Community
- Discord: https://discord.gg/XgGxMSkvUM
- GitHub Discussions: https://github.com/DioxusLabs/dioxus/discussions
- Twitter: @dioxuslabs
Rust Nostr Community
- GitHub Discussions: https://github.com/rust-nostr/nostr/discussions
- GitHub Issues: https://github.com/rust-nostr/nostr/issues
Nostr Community
- Nostr Protocol: https://nostr.com
- Nostr Clients: Various Nostr apps for testing
Additional Libraries
Async Utilities
async-channel = "2"
async-lock = "3"
async-broadcast = "0.7"
Networking
tungstenite = "0.21" # WebSocket
tokio-tungstenite = "0.21"
Utilities
uuid = { version = "1", features = ["v4", "serde"] }
chrono = "0.4" # Date/time
url = "2"
Configuration & Environment
Config Management
config = "0.14" # Configuration management
dotenv = "0.15" # Environment variables
CLI Tools
clap = { version = "4", features = ["derive"] }
Performance & Profiling
Profiling Tools
- cargo-flamegraph: Flame graph profiler
- perf: Linux perf integration
- Instruments: macOS profiling
Benchmarking
- Criterion.rs: https://github.com/bheisler/criterion.rs
- Divan: https://github.com/nvzqz/divan
CI/CD
GitHub Actions
- Rust Actions: https://github.com/actions-rs
- Cross-compilation: https://github.com/cross-rs/cross
Testing Matrix
- Linux (ubuntu-latest)
- macOS (macos-latest)
- Windows (windows-latest)
- WASM (wasm32-unknown-unknown)
Related Projects for Reference
Nostr Clients (Rust)
- Gossip: https://github.com/mikedilger/gossip
- nostr-rs-relay: https://sr.ht/~gheartsfield/nostr-rs-relay/
Nostr Libraries (Other Languages)
- nostr-tools (JS): https://github.com/nbd-wtf/nostr-tools
- NDK (TypeScript): Nostr Development Kit
- nostr-ruby: Ruby implementation
License & Legal
- MIT License: https://opensource.org/licenses/MIT
- Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0
Last Updated: 2025-11-17 Document Version: 2.0