A modern, multiplatform Nostr client built with Rust. Notedeck provides a feature-rich experience for interacting with the Nostr protocol on both desktop and Android platforms.
- Multi-column Layout: TweetDeck-style interface for viewing different Nostr content
- Dave AI Assistant: AI-powered assistant that can search and analyze Nostr content
- Profile Management: View and edit Nostr profiles
- Media Support: View and upload images with GIF support
- Lightning Integration: Zap (tip) content creators with Bitcoin Lightning
- Cross-platform: Works on desktop (Linux, macOS, Windows) and Android
Notedeck runs smoothly on Android devices with a responsive interface:
notedeck
├── crates
│ ├── notedeck - Core library with shared functionality
│ ├── notedeck_chrome - UI container and navigation framework
│ ├── notedeck_columns - TweetDeck-style column interface
│ ├── notedeck_dave - AI assistant for Nostr
│ ├── notedeck_ui - Shared UI components
│ └── tokenator - String token parsing library
To run on desktop platforms:
# Development build
cargo run -- --debug
# Release build
cargo run --releaseFor Android devices:
# Install required target
rustup target add aarch64-linux-android
# Build and install on connected device
cargo apk run --release -p notedeck_chrome- Install Android Studio
- Open 'Device Manager' and create a device with API level
34and ABIarm64-v8a - Start the emulator
- Run:
cargo apk run --release -p notedeck_chrome
Customize Android views for testing:
- Copy
example-android-config.jsontoandroid-config.json - Run
make push-android-configto deploy to your device
./scripts/dev_setup.shThis installs git hooks for code formatting and changelog trailer validation, and a pre-push hook that uploads Git LFS objects.
The egui snapshot baselines (crates/*/tests/snapshots/**/*.png) are stored in
Git LFS. Everything else, including the images under
assets/ and the Android icons, is a plain git blob, so building and
cargo test work without it. You need git-lfs only to run or re-record
snapshot tests (scripts/snapshot-test) and to push a commit that changes a
snapshot:
brew install git-lfs # or: apt install git-lfs; the nix shell provides it
git lfs install # once per machine: the smudge/clean filters
git lfs pull # in a clone made before git-lfs was installedIf you never run snapshot tests, GIT_LFS_SKIP_SMUDGE=1 git clone ... skips
downloading them; scripts/snapshot-test then stops and says to git lfs pull.
The objects live on GitHub (damus-io/notedeck). To push to a remote that has no
LFS server of its own, such as a plain SSH mirror, point git-lfs at GitHub for
that remote; don't commit a .lfsconfig, which would send every fork's pushes
there:
git config remote.<name>.lfsurl https://github.com/damus-io/notedeck.git/info/lfsDetailed developer documentation is available in each crate:
Notedeck is currently in BETA status. For the latest changes, see the CHANGELOG.
Notedeck allows for app development built on top of the performant, built specifically for nostr database nostrdb. An example app written on notedeck is Dave
Building on notedeck dev documentation is also on the roadmap.
Contributions are welcome! Please check the developer documentation and follow these guidelines:
- Fork the repository
- Install git-lfs and run
git lfs install(snapshot pngs are in LFS; see above), then run./scripts/dev_setup.shto install git hooks - Create a feature branch (
git checkout -b feature/amazing-feature) - Before committing, run
cargo fmt --all && cargo clippy - Every commit must include a Changelog git trailer. For user-facing changes use
Changelog-Added,Changelog-Changed,Changelog-Fixed, orChangelog-Removed. For internal changes useChangelog-None:. CI enforces this. - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Help us bring Notedeck to non-English speakers!
Request to join the Notedeck translations team through Crowdin.
If you do not have a Crowdin account, sign up for one. If you do not see your language, please request it in Crowdin.
For security issues, please refer to our Security Policy.
This project is licensed under the GPL - see license information in individual crates.
- William Casarin jb55@jb55.com
- kernelkind kernelkind@gmail.com
- And contributors

