notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 9ec5f1efa2715b5792c24c05c26c7c29e27cef5c
parent 405b62c15a7e8c48022a2964f6a61c7294b66207
Author: William Casarin <jb55@jb55.com>
Date:   Mon, 21 Apr 2025 13:36:36 -0700

docs: improve top-level docs

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
MREADME.md | 143++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 83 insertions(+), 60 deletions(-)

diff --git a/README.md b/README.md @@ -1,104 +1,127 @@ -# Damus Notedeck +# Notedeck [![CI](https://github.com/damus-io/notedeck/actions/workflows/rust.yml/badge.svg)](https://github.com/damus-io/notedeck/actions/workflows/rust.yml) -A multiplatform nostr client. Works on android and desktop +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. -The desktop client is called notedeck: +<p align="center"> + <img src="https://cdn.jb55.com/s/6130555f03db55b2.png" alt="Notedeck Desktop Screenshot" width="700"> +</p> -![notedeck](https://cdn.jb55.com/s/6130555f03db55b2.png) +## โœจ Features -## Android +- **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 -Look it actually runs on android! +## ๐Ÿ“ฑ Mobile Support -<img src="https://cdn.jb55.com/s/bebeeadf7001fae1.png" height="500px" /> +Notedeck runs smoothly on Android devices with a responsive interface: -## Usage +<p align="center"> + <img src="https://cdn.jb55.com/s/bebeeadf7001fae1.png" alt="Notedeck Android Screenshot" height="500px"> +</p> -```bash -$ ./target/release/notedeck +## ๐Ÿ—๏ธ Project Structure + +``` +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 ``` -# Developer Setup +## ๐Ÿš€ Getting Started -## Desktop (Linux/MacOS, Windows?) +### Desktop -If you're running debian-based machine like Ubuntu or ElementaryOS, all you need is to install [rustup] and run `sudo apt install build-essential`. +To run on desktop platforms: ```bash -$ cargo run --release +# Development build +cargo run -- --debug + +# Release build +cargo run --release ``` -## Android +### Android -The dev shell should also have all of the android-sdk dependencies needed for development, but you still need the `aarch64-linux-android` rustup target installed: +For Android devices: -``` -$ rustup target add aarch64-linux-android +```bash +# Install required target +rustup target add aarch64-linux-android + +# Build and install on connected device +cargo apk run --release -p notedeck_chrome ``` -To run on a real device, just type: +### Android Emulator -```bash -$ cargo apk run --release -p notedeck_chrome -``` +1. Install [Android Studio](https://developer.android.com/studio) +2. Open 'Device Manager' and create a device with API level `34` and ABI `arm64-v8a` +3. Start the emulator +4. Run: `cargo apk run --release -p notedeck_chrome` -## Android Emulator +## ๐Ÿงช Development -- Install [Android Studio](https://developer.android.com/studio) -- Open 'Device Manager' in Android Studio -- Add a new device with API level `34` and ABI `arm64-v8a` (even though the app uses 30, the 30 emulator can't find the vulkan adapter, but 34 works fine) -- Start up the emulator +### Android Configuration -while the emulator is running, run: +Customize Android views for testing: -```bash -cargo apk run --release -p notedeck_chrome -``` +1. Copy `example-android-config.json` to `android-config.json` +2. Run `make push-android-config` to deploy to your device -The app should appear on the emulator +### Setting Up Developer Environment -[direnv]: https://direnv.net/ +```bash +./scripts/dev_setup.sh +``` -## Android Config +This adds pre-commit hooks for proper code formatting. -You can load custom views onto an android device for testing: +## ๐Ÿ“š Documentation -1. Copy `example-android-config.json` to `android-config.json` +Detailed developer documentation is available in each crate: -2. Run `make push-android-config` to copy it to your device +- [Notedeck Core](./crates/notedeck/DEVELOPER.md) +- [Notedeck Chrome](./crates/notedeck_chrome/DEVELOPER.md) +- [Notedeck Columns](./crates/notedeck_columns/DEVELOPER.md) +- [Dave AI Assistant](./crates/notedeck_dave/docs/README.md) +- [UI Components](./crates/notedeck_ui/docs/components.md) -## Previews +## ๐Ÿ”„ Release Status -You can preview individual widgets and views by running the preview script: +Notedeck is currently in **ALPHA** status. For the latest changes, see the [CHANGELOG](./CHANGELOG.md). -```bash -./preview RelayView -./preview ProfilePreview -# ... etc -``` +## ๐Ÿค Contributing -When adding new previews you need to implement the Preview trait for your -view/widget and then add it to the `src/ui_preview/main.rs` bin: +Contributions are welcome! Please check the developer documentation and follow these guidelines: -```rust -previews!(runner, name, - RelayView, - AccountLoginView, - ProfilePreview, -); -``` +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request +## ๐Ÿ”’ Security -## Contributing +For security issues, please refer to our [Security Policy](./SECURITY.md). -Configure the developer environment: +## ๐Ÿ“„ License -```bash -./scripts/dev_setup.sh -``` +This project is licensed under the GPL - see license information in individual crates. -This will add the pre-commit hook to your local repository to suggest proper formatting before commits. +## ๐Ÿ‘ฅ Authors -[rustup]: https://rustup.rs/ +- William Casarin <jb55@jb55.com> +- kernelkind <kernelkind@gmail.com> +- And [contributors](https://github.com/damus-io/notedeck/graphs/contributors)