Nostr CMS
Project Links
Important TODO
- Remember to reread, ETL to QE, Update 61, Quality Assurance
- DDT019 Nostr CMS Blossom Uploads for Static Content
- DDT021 - Deploy white listed nostr relay for the wiki at wiki.mememaps.net
- DDT022 - Deploy a NIP-54 client at wiki.mememaps.net
Other TODO
- DDT016 - Write a blog post about how the titles are supposed to be generated and the difference between wikistr and nostrudel
- DDT018 Scope User Journeys and Features of Nostr Wiki + Articles + Knowledge Graph + Posts to Static Site
- DDT017 Discovery and Blog post for Nostr Event Availability NIP
- DDT019 Nostr CMS Blossom Uploads for Static Content
- DDT020 - CID S3 Uploads for Nostr CMS Static Content
Goal
We need take this site that I currently generate from my Obsidian vault and,
- publish it on nostr, including backlinks
- publish on nostr linking to specific articles
- publish on a static site generated from nostr content
- federate
- version control
Anything do do with RBAC and the dream of Notion on Nostr comes later. We just want the publication of my nostr from Obsidian to treat Nostr as the single source of truth.
User Journey
- User has a series of notes in a recursive folder of markdown notes
- User uses dentropys-obsidian-publisher to compile those notes to a sqlite database
- The NOSTR tutorial CLI is used with the following inputs
- Sub Command
dentropys-obsidian-publisher
- SQLite Database from dentropys-obsidian-publisher
- List of nostr relays
- NSEC
- Sub Command
- The Markdown folder is now accessable when viewed from a NIP-54 client such as
Notes
- If we want to have our own Obsidian Frontend that replaces Obsidian we need to figure out a couple different things for wiki
- Block/Meme/Paragraph Modularity
- Version Control
- Backlinks
- Labeled Backlinks with Reactions
- NIP19 Embeds
- NIP19 Links
- Include Relay
- Check for updated meme Document or Meme from User
- AI conversations
- Links into personal PKMS
- Privacy
- Publish updates that are encrypted
- Publish updates to private Nostr Server with Auth
To Research
- hzrd149/nostr-idb: A collection of helper methods for storing nostr events in an IndexedDB
- hzrd149/nostrudel at d66ee1e062f1dc8db0c3bff3821ef0b63f67ee0e
- hzrd149/blossom-server: Blobs stored simply on mediaservers
- hzrd149 (hzrd149) / Repositories
- hzrd149/awesome-blossom: A collection of tools and apps built using the blossom spec
- Communities
- nostrocket.org/rockets
- Blossom Uploader | Nostrify
Next Steps
- dentropys-obsidian-publisher Patches
- Use SQLite in Memory
- Publish Date gathered from Git/Fossil
- Host Images via Content Addressable Storage via Blossom or S3
- Rebuild my obsidian-publisher into CGFSTutorials CLI project
- dentropys-obsidian-publisher can not publish files or links without spaces
- Script that tries over and over to publish Wiki and produces useful logs with errors rather than mindlessly waiting one second between sending events
- Sore published nostr events in sqlite
- Sync published nostr events in sqlite
- Test the nostrudel client with numbers in the d tag and see if it resolves, maybe we add an additional tag with the numbers and see what happens
- Script to backup published nostr events of of wiki
- Script to publish wiki to another nostr relay
- Documentation of this script
- Attach CID tag to NIP-54 events
- Back Links integrated somehow for NIP-54
- How can two events link to one another when they both need a hash one another's nostr event
- NIP proposal for Per cell/block/line/sentence version control Notion/Anytype.io/Coda style
- Obsidian Extension for Wiki Editing and Sharing keeping everything up to date
- Note Pin Integration via NIP51
- TODO
- Shelved
- Test naddr rather than nevent for publishing on traditional nostr
- We can use the uuid of the event for the d tag
- Loop through all the wiki posts in the nostr file
- Test naddr rather than nevent for publishing on traditional nostr
Completed
- Use nosdump and nostr-tools to rebroadcast events to nostr-rs-relay
- Write a script that takes the SQLite export from dentropys-obsidian-publisher and publishes each Node as an event
Learnings
- Tags we use for our 308018 events
- d
- title
- a, a link
- a tag
- 308018:public_key:d-tag-title
- e for mentions
- e for fork
- e for defer
- summary, just a short string of what's up single tweet size
- client (optional)
- We do not need a nostr relay we needed NIP19 and NIP-54
- Using NIP-54 we do not need to worry about creating a directory because linking via name of wiki page Obsidian style is supposed, and also makes federation interesting because you see what other people of the same topic generated
- Using a separate private key for each document and directory is not needed for the changed scope of this project, NIP-54 does version control on the level of the document. Sentence or Line level version control is a completely separate project that is far too complex to be working on right now.
- Batching events and putting them on S3 to be loaded into a local relay would have required developing our own Nostr Client which we did not end up having to do because we discovered NIP-54 was integrated in nostrudel, wikistr and wikifreedia with nostrudel being the one we actually like and use because you can modify your relay in the UI and it supports NIP19 addressing
- We have a list of custom event type we were expecting to implement,
- Custom Event Types
- Directory
- Contains documents and Directories
- Document
- Contains memes and Documents
- Meme
- It a version controlled string of text
- Directory
- The Document and Meme types were for line or sentence version control which we removed from the scope of this project for now because that would require a custom Nostr client be written
- The functionality of the Directory Nostr event type can just be implemented with NIP-54 events with Obsidian style links and we can later check if NIP19 links are supposed
- Custom Event Types
- Found big need to leave dashes as a dash
Backlinks
- Project Products
- dentropys-obsidian-publisher
- ETL to QE, Update 60, Project Management Strategy
- ETL to QE, Update 60, Project Management Strategy
- ETL to QE, Update 57, Roadmap Animation
- ETL to QE, Update 48, Attempting to Consciously Make a Plan
- ETL to QE, Update 45, Perspective is difficult
- DDaemon 2025 Roadmap Rev. 0.0.3
- DDaemon 2025 Roadmap Rev. 0.0.2
- Publishing PKMS on Question Engine User Journey