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:
M | README.md | | | 143 | ++++++++++++++++++++++++++++++++++++++++++++++--------------------------------- |
1 file changed, 83 insertions(+), 60 deletions(-)
diff --git a/README.md b/README.md
@@ -1,104 +1,127 @@
-# Damus Notedeck
+# Notedeck
[](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>
-
+## โจ 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)