Announcing Nostrify
As I have been building Ditto, it has become clear that there are foundational Nostr development tools missing from the ecosystem — tools Ditto needs to succeed.
I have contributed heavily to nostr-tools (as the second-highest contributor), and sent a few patches to NDK. But I found difficulties with both that are not easy to solve.
I wanted a modular library built around thoughtful interfaces, using modern web APIs like AbortSignal and AsyncGenerator. I wanted components that could be easily swapped in and out, instead of a monolithic framework.
Additionally, the problems I was facing on Ditto were also problems with the Mostr Bridge. And I know I'm not the only one! So instead of just baking these solutions into Ditto, I decided to create a new Nostr library where we could all share code together.
Thus, Nostrify was born!
What is Nostrify?
Nostrify is a flexible library for building Nostr apps in TypeScript. It provides Relays, Signers, Storages, and more to help you build your app.
It is centered around interfaces such as NStore
, NRelay
, and NostrSigner
. So even if you don't like the built-in components, you can easily swap them out for your own!
Nostrify uses nostr-tools under the hood for low-level operations, but it implements a brand-new Relay and Pool from scratch. If you want, we even offer a wrapper around NDK so you can use it as a relay backend!
Building Together
A core tenet of Nostrify is "interfaces over implementations". You can think of Nostrify as a protocol for building on Nostr with TypeScript... kind of like Nostr itself!
We want you to build your own components and share them with the community. To get started, see:
Ditto: Soon
Ditto is a decentralized, self-hosted social media server that emphasizes user control and community building across platforms. Key features include a built-in Nostr relay, compatibility with any Mastodon app, and full customizability. Always open-source, no ads, no tracking, and no censorship.
Please stay tuned. Ditto is almost ready!