Nostr-PHP progress report #3 March & April 2025

Image
OpenSats

1) How did you spend your time?

I continued to write and publish more detailed weekly updates here: https://nostrver.se/blog. These updates are also cross-posted via Nostr as long-form content.

All commits on the main branch from 01-03-2025 till 30-04-2025: https://github.com/nostrver-se/nostr-php/commits/main/?since=2025-03-01&until=2025-04-30 

NIP-19 bech32-encoded entities

This has been implemented in the library, see https://github.com/nostrver-se/nostr-php/pull/68 

Added getTag method to the Event class

https://github.com/nostrver-se/nostr-php/commit/5afa38a45d3371bf79c78cda4d93be3ecef86985 

Added a profile class to fetch profile metadata of a given pubkey

https://github.com/nostrver-se/nostr-php/commit/0e6cbbb80b08b2b38722d4cef68205c64b70b205 

Drupal nJump module which implements Nostr-PHP

This Drupal module which is providing these Nostr features is FOSS and uses the Nostr-PHP library for doing the following:

  • Request the event from one or more relays
  • Decode the provided NIP-19 identifier

For now this module is way for me to utilize the Nostr-PHP library with Drupal for fetching events.

Any event and a NIP-19 identifier can now be fetched with the following URL pattern:

https://nostrver.se/e/{event_id|nevent1|note1|addr1}

As an example, take this URL https://nostrver.se/e/nevent1qvzqqqqqqypzqmjxss3dld622uu8q25gywum9qtg4w4cv4064jmg20xsac2aam5nqqsqm2lz4ru6wlydzpulgs8m60ylp4vufwsg55whlqgua6a93vp2y4g3uu9lr fetches the data from one or more relays. This data is then being saved as a (Drupal) node entity (in a database on the server where this website is hosted, which is located in my tiny office). With this saved node, this data is now also available at https://nostrver.se/e/0dabe2a8f9a77c8d1079f440fbd3c9f0d59c4ba08a51d7f811ceeba58b02a255/1 where the (cached) data is server from the database instead. It's just raw data for now, nothing special about it (yet).

Contributions to the library

All these contributions are made by Djuri who is working on the Nostr integration in https://satsback.com and on a private messaging browser client https://n17.chat.

Removed the CLI tool from the library

See https://github.com/nostrver-se/nostr-php/pull/93 

New / updated documentation at nostr-php.dev

I started to explore what is possible generating documentation using Goose as an AI agent and Claude as the LLM provider. Bootstrapping new pages with documentation works very well while I point to several resources to be used as input for the LLM (using the example snippets in the Nostr-PHP library and the Nostr NIP repository).

All commits on the master branch from 01-03-2025 till 30-04-2025: https://github.com/nostrver-se/nostr-php.dev/commits/master?since=2025-03-01&until=2025-04-30 

Some analytics

Source: https://packagist.org/packages/swentel/nostr-php/stats 

Other Nostr stuff I would to mention I worked on

NIP-B0 web bookmarks with CCNS.news

I moved https://ccns.nostrver.se to a own domain https://ccns.news and has integrated NIP-B0 which we worked out how to handle web bookmarks via Nostr. Before this NIP was merged, there were already some other Nostr clients handling web bookmarks:

Also Fiatjaf started to work on an annotation noting tool (browser extension) called Lantern (which is a fork of https://hypothes.is) integrating Nostr for creating highlights and annotations on a webpage with text. This extension can also be used to bookmark web pages.

On CCNS.news there is a global feed now: https://ccns.news/global which fetches all the web bookmark events with kind 39701 from several public Nostr relays. I had a rough idea to compare feeds generated with NDK and Nostr-PHP (for both using the same set of relays):

CCNS global feed

When you post a bookmark now on the site, a kind 39701 event is transmitted to some Nostr relays (take a look at this event for example). Optionally you can also publish this content as a note to the network.

2) What do you plan to work on next quarter?

3) How did you make use of the money?

  • Livings costs

4) Is there anything we could help with?

I would love to see a (closed/private) digital place with other Nostr OpenSats grantees where we can share our experiences and challenges. We could give feedback to each other as a form of encouragement. For example I'm curious how other grantees are explaining the work they to other which are not familiar with FOSS, Nostr and/or Bitcoin.