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.