Primal solved this problem by building a proxy "relay" that handles fetching, aggregating and caching and it's by far the most used client since the competition sucks. Some kind 1 clients don't even try to do any fancy client-side caching and default to download the whole internet every time you open the app, ffs. #Pubky seems to have a similar design to Primal with homeservers and indexers: I and the people I follow can host the data wherever we want (homeservers can be resolved by pubkey via pkarr/pkdns) and an indexer can easily find it, aggregate it and push notifications to clients. One downside of this design is that it requires trusting the homeserver since the data is not signed. On the other hand, the UX is way better if you don't have to sign everything you poast. You might not like @npub13ndp...0svh's style but the design choices of #Pubky make sense and the is really good, I recommend you check it out.
verbiricha's avatar verbiricha
the nostr relay model is a double-edged sword, especially if your client needs to aggregate data from a bunch of pubkeys: dump pipes makes writing and running relays a breeze but dumps all the complexity to clients. now you don't need a backend but you do have to implement caching, storage and indexing on the client side with subpar primitives (at least on the web) just to get a half decent UX. i'm convinced that clients centered around relays are the sanest way to build apps: @Jumble and @npub1gm7g...0fte embrace this idea.
View quoted note →

Replies (16)

n's avatar
n 5 months ago
I was able to log in to the web client using the invitation code you provided, but the backup failed and I couldn't set up the pubkey ring properly, which resulted in me being unable to log in anymore. Could you please send me a new invitation code once again?
n's avatar
n 5 months ago
okay!๐Ÿค™ใ‚ใ‚ŠใŒใจใ†
n's avatar
n 5 months ago
In the web app settings, I selected file backup but it didn't save to my mobile device. After that, the backup button became unclickable. The key wasn't deleted, but since I logged out without completing the backup, I can no longer log in. In verbiricha's follow list, there should be a user with a Netscape icon.
I think there are some demo apps where individual event data is signed, Nostr style. Not signing each event is just a choice, it's not a protocol constraint. There's really no need to sign individual events in most cases, but if you see a need to do so then you can implement it. That's sort of the Pubky ethos on that side if things, as far as I can see.
Niel Liesmons's avatar
Niel Liesmons 5 months ago
> default to download the whole internet every time you open the app, ffs. Hahaha :haha:
Niel Liesmons's avatar
Niel Liesmons 5 months ago
I have a spec ready for #communikeys that lets holders of a Community-badge (confirmed by the communikey) hand out that same Badge to others. Those invited profiles, however, cannot hand out that Badge, until the communikey confirms the Badge for them. I think an invite tree that only has one layer like that is the best middle way for good UX and feasibility on the App, Relay and Spec level. https://wikistr.com/nip-badge*a9434ee165ed01b286becfc2771ef1705d3537d051b387288898cc00d5c885be
Niel Liesmons's avatar
Niel Liesmons 5 months ago
@Keyhan Alizadeh how easy would something like this be to implement on the (automated) relay side? The idea is that you'd (for example) ONLY accept Articles from the profiles that have a "Member" Badge (awarded by the #communikey itself OR someone with one awarded by the #communikey, not deeper).
If I understand the spec correctly, it shouldn't be that much hard. In a general big relay that is used by different clients, this check may break the function or performance of the relay. But in a Communikey specific relay it won't have any issues.
โ†‘