This was my first attempt at building a Nostr client for book lovers,
a decentralized Goodreads. I added lots of features very fast, without
properly considering the architecture, and the app collapsed under its own weight. 😅
I believe I would need to start over and ended up moving on to other things.
Maybe one day...
- The main reason for Goodreads to dominate is their book catalog, so I think the only way to disrupt them is to build a public one, that everyone can improve and benefit from. I created a new nostr event kind, to add a book description, modelled after the existing one for Wiki articles.
- To obtain better performance, I setup a local nostr relay using IndexedDb, which I syncronize with the user's relays on startup using negentropy. The scheduling and state management around this local relay was... hard...
- My design for book reviews was heavily influenced by this article shared in a PR in the nips repo (nostr implementation possibilities), about adding a Review event kind. I briefly participated in it.
You will need to have Deno installed to run this app.
# 1. Install dependencies
pnpm i
# 2. Run the dev server
pnpm devThat's it!
In order to actually use the app, you will need a nostr extension. Nostr works with public private keys, and all your actions are signed with your private key. Pasting your private key in random apps on the internet is not a good idea, so we use a browser extension so that my app never sees your key. I recommend nos2x as a basic one to get started.
When testing buggy apps like mine, you should probably also make a throwaway key, since I could accidentally publish nostr events you don't want!