Skip to content

imattau/binder

Repository files navigation

binder

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.

Binder cover

Features

  • 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.

Tech highlights

  • 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.

Project layout

  • 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.

Getting started (local)

flutter pub get
flutter run -d chrome

Android

flutter run -d android

Web build (Wasm)

flutter build web --wasm --release

VPS install/update/remove

After cloning on a server:

scripts/binderctl.sh install
scripts/binderctl.sh update
scripts/binderctl.sh remove

The script detects Caddy/Nginx (prefers Caddy), can install Caddy, builds the Wasm web bundle, and deploys to /var/www/binder by default.

Authentication behavior

  • Web: NIP‑07 or remote signer (NostrConnect/bunker/QR).
  • Android: remote signer apps (Amber/Primal) and NIP‑46 flows only.

Testing

flutter analyze
flutter test

Contributing workflow

  • Read AGENTS.md and PROGRESS.md before making changes.
  • Update PROGRESS.md with what you changed and the latest test results.
  • Prefer established Flutter/Dart packages over custom implementations.

Release notes

Use docs/release-checklist.md to validate web + Android builds before publishing.

About

Nostr Book

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages