Bookstr was my first attempt at a Nostr client for book lovers: a decentralized Goodreads. I shipped many features quickly, but the architecture could not support the growing complexity, so I eventually moved on rather than continuing without a redesign.

Design decisions

  • Model a public book catalog that anyone can improve using a new Nostr event kind based on the existing Wiki article event.

  • Keep a local Nostr relay in IndexedDB and synchronize it with each user's relays on startup using Negentropy.

  • Explore a dedicated review event kind, informed by ongoing discussion in the Nostr Implementation Possibilities repository.

Key handling

The app relies on a Nostr browser extension so actions can be signed without exposing a user's private key to the application.