Introducing Swarmstr
For some time I’ve been working on a q&a nostr client with a simple goal:
Find answers to your questions. Assist others in resolving theirs.
Feel free to check it out at https://swarmstr.com
About Swarmstr
Swarmstr runs as web client and as a node.js server. Both, Swarmstr client and server are nostr clients. More resourceful relay subscriptions are delegated to the swarmstr server eg. all events tagged with #asknostr (and all those quoted in those events) are requested from many relays and rebroadcasted to a separate search pseudo-relay (only swarmstr server can write events to it). Swarmstr web client will then only need to query the search relay. The search relay is almost like a regular relay, but it only accepts { "search”: "text…” } filter (NIP-50). It uses elastic search instance to get relevant search results.
Swarmstr server uses nostr-dev-kit/ndk with caching (redis) to talk to nostr. With the caching on, swarmstr server has fast access to events that were already received in subscriptions so it can eg. provide meta tags for the head section of the document, so the notes can be indexed by search engines like google etc.
I would want to use that fast rail for other stuff too. Take some load off the web client. Use swarmstr server a bit more as an api that the client can call. Then potentially, for other nostr clients, turn the swarmstr server to a relay (a swarmstr relay), and let them query stuff like recent notes, hot notes, stats etc.
Ideally the whole thing would be a docker container, so people can run their own swarmstr instances without much hustle. Swarmstr instances could talk to each other (would not necessarily have to if someone doesn’t want it) eg. right now I’m running an instance for a friend at https://biblestr.com . Swarmstr instance at https://swarmstr.com can call biblestr’s search relay and vice versa. Ultimately there could be many swarmstr instances focused around different hashtags (private or public).
Some milestones:
- NIP-32 Labelling - allow users to evaluate questions eg. suggest tags, link to other similar questions, suggest experts etc. For answers: marking them as correct, irrelevant, not a resolution etc.
- NIP-51 Lists - allow users to create and import users and notes lists. Useful for muting specific users (eg. filtering spam), easily linking to a set of questions/answers
- NIP-58 Badges - award badges to active users. Great for recognition. Additionally badge owners might have access to some extra features (like premium nostr address, lightning address etc.)
- NIP-46 Login with nostr connect
- PWA - at some point, a PWA will be released.
Feedback much appreciated!