I recently found out about primal.net while following a link from X. It kind of felt like a medium.com article - a premium feeling website. I looked into the service and realized that it's backed by nostr and thought "AT-proto should have that too!"
The first thing I did (of course) was to impulsively purchase a domain for the new product I was going to create - I purchased avg.blue.
Understanding the market
Before diving in and implementing my own lexicon, I started what I should've done earlier - looking in to existing products.
I found the following (I'm sure I missed a few):
whtwnd.com
whtwnd.com
WhiteWind posts are inlined within the at-proto record. They're simple: A markdown record, a bit of metadata such as title, subtitle & list of attachment blobs.
I didn't like that images are referenced as a link to the user's PDS, such behavior causes breakage once a user migrates to a new PDS - but apparently, there's no way to reference a blob using AT-URIs.
blog.smokesignal.events
smokesignal's lexicon has a different approach - the markdown content is linked in a blob. I found this interesting - I like the idea of not spamming relays with extra data they most likely won't consume.
leaflet.pub
Leaflet records are also inlined. But their format is the common markdown format we all know. Leaflet encodes rich-text information within the lexicon. Every text block or image reference is in the lexicon. It seems very neat, but not as portable - except that the elements here seem mostly inspired by Markdown.
Another thing unique to leaflet (which I appreciate, because I also want to make something similar) is the ability to create publications. I'm unsure what publications here on leaflet do except categorize (I don't see any collaboration features here yet) - but I hope that they will allow multiple authors to take credit for articles.
Thoughts on Publications
Publications aren't as simple to implement as one would on a centralized network. The whole point is that every user owns their records. If I ever get to it - I'm currently thinking that the article record should always be owned by the publication's DID, and that the record contains an authors
section with author AT-URIs and optionally their role in creating the article. In addition, each author
would have a claim record to claim credit for their work on the article referencing the article's CID (which would invalidate the claim if the record changes).
I think this design is the best - I imagine any newspaper wouldn't want a former author to be able to delete an article. But I also wouldn't want them to be able to claim that anyone published something without consent of the author.
avg.blue
I don't know if I'll ever get to creating a feature-full blogging platform with my current job. But for now, I created a little backend that crawls and renders whitewind posts and adds a few SEO features. I want my service to be dead-simple, and to work without JS at all. A simple blog has no reason to use JavaScript (except the editing UI). I'd like to add more lexicons to be crawled - for now, I'm just implementing view-only access into existing lexicons. Maybe one day I'll create my own lexicon if I believe it would be an improvement over the others.