Skip to content

A Nostr relay with a clear architecture and high test coverage. (Thanks to https://opensats.org/ for their generous donation!)

License

Notifications You must be signed in to change notification settings

fossabot/nostr-relay-nestjs

 
 

Repository files navigation

Nostr Relay NestJS

Coverage Status FOSSA Status

Powered by nostr-relay & NestJS.

A Nostr relay with a clear architecture and high test coverage

If you'd like to help me test the reliability of this relay implementation, you can add wss:https://nostr-relay.app to your relay list (it's free) 💜⚡️

Deploy on Railway

Features

🟢 Full implemented 🟡 Partially implemented 🔴 Not implemented

Feature Status Note
NIP-01: Basic protocol flow description 🟢
NIP-02: Contact List and Petnames 🟢
NIP-04: Encrypted Direct Message 🟢
NIP-09: Event Deletion 🔴 No real deletion in a distributed system
NIP-11: Relay Information Document 🟢
NIP-13: Proof of Work 🟢
NIP-22: Event created_at Limits 🟢
NIP-26: Delegated Event Signing 🟢
NIP-28: Public Chat 🟢
NIP-40: Expiration Timestamp 🟢
NIP-42: Authentication of clients to relays 🟢
NIP-45: Counting results 🔴
NIP-50: Keywords filter 🟢

Extra Features

TOP verb

TOP verb accepts a subscription id and filters as specified in NIP 01 for the verb REQ.

["TOP",<subscription_id>,<filters JSON>...]

And return the top N event IDs with the highest score (Scoring is determined by relay).

["TOP",<subscription_id>,<event id array>]

Example:

["TOP","test",{"search":"nostr bitcoin","kinds":[30023],"limit":10}]

["TOP","test",["2359f4bdfe0bd2353aa7702dc1af23279197694823b8b4916b904a9940334192","622a875c9f9a4696eb4050fa5b0bba3a9b0531ec4a27398245af7369e6d40da8","d8989c65d26511b2e3ea42b0ebfcaf0ea885cb958419df4ddb334cb72556f950","ffcb0c9e0ace0b5d3928f30395bc9832763f8b583f2b1beb696f7c199f9f94d2","287147867bd00299553fa91e110d40206eea19a9142a4283832ee67e1407e6f2","ffaea8bc3b08db32af97f1ff595e68eee8a2f7b0a4a66dc2eff330f450855f6c","cddbc6cd4a0589d4a593e99a3a94426c85c6867b47d7eb751ce419c27f079b76","f2291ac6d206e898965b9e4ba6bbe5bb10118e6a74bd9f9f13597813979a254b","a101a2a44938dbb0a611bc00bd7ed4cb44d682fea4c14618bd1148567cd6fcc3","21990a723b491b6c594438a2ecf5d5e4898212635f59e82f1c736d994a86e907"]]

Quick Start

Dockerfile

Build image

./scripts/build.sh

Create .env file based on example.env file

DOMAIN=localhost
DATABASE_URL=postgresql:https://username:xxxxxxxxxx@host:port/database

Run container

./scripts/run.sh

TODO

  • Unit test
  • Metrics, Monitoring and Alerting
  • Support multi nodes
  • Support for Bitcoin Lightning Network payments

Architecture

Architecture Diagram

Donate

If you like this project, you can buy me a coffee :) ⚡️ [email protected] ⚡️

License

This project is MIT licensed.

FOSSA Status

About

A Nostr relay with a clear architecture and high test coverage. (Thanks to https://opensats.org/ for their generous donation!)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 98.5%
  • Other 1.5%