Binder is a Flutter-based Nostr reader/writer for web + Android. Books are Nostr curated sets (kind 30004) that act as a table of contents for long‑form chapters (NIP‑23 kind 30023). The app supports reading, drafting, publishing, relay management, and wallet-backed zaps.
- Reader: Carousel + grid layout, grouped browsing (hashtags/authors/date), and a chapter reader with reading aids.
- Writer: Draft workspace for book metadata + chapter queue, Markdown editor, autosave/history, and encrypted draft staging.
- Nostr-native: Relay fetch/publish, NIP‑07 (web only), remote signer support (NIP‑46/bunker/QR), and NIP‑65 relay lists.
- Payments: NWC wallet management and zap actions (LNURL/LUD16).
- Media: Configurable media servers with Blossom defaults and staged uploads for cover/chapter images.
- Flutter: targets web (Wasm) and Android.
- Drafts: encrypted before relay staging (NIP‑44).
- Auth: NIP‑07 (browser only), Amber/remote signer on Android.
- Analytics: reactions/reposts/comments/zaps surfaced per book/chapter.
lib/models/: data contracts (Book,Chapter,ChapterDraft,ProfileMetadata).lib/services/: auth, signing, relays, drafts, media, wallet.lib/screens/+lib/widgets/: UI and reusable components.docs/feature-research.md: UX research baseline.docs/release-checklist.md: release steps for web/Android.PROGRESS.md: active tracker (update every run).AGENTS.md: contributor and agent instructions.
flutter pub get
flutter run -d chromeflutter run -d androidflutter build web --wasm --releaseAfter cloning on a server:
scripts/binderctl.sh install
scripts/binderctl.sh update
scripts/binderctl.sh removeThe script detects Caddy/Nginx (prefers Caddy), can install Caddy, builds the Wasm web bundle, and deploys to /var/www/binder by default.
- Web: NIP‑07 or remote signer (NostrConnect/bunker/QR).
- Android: remote signer apps (Amber/Primal) and NIP‑46 flows only.
flutter analyze
flutter test- Read
AGENTS.mdandPROGRESS.mdbefore making changes. - Update
PROGRESS.mdwith what you changed and the latest test results. - Prefer established Flutter/Dart packages over custom implementations.
Use docs/release-checklist.md to validate web + Android builds before publishing.
