A nostr relay
i'm changing the code a lot in a backwards incompatible way ... this probably isn't ready for prod yet until it has defenses either
- supports many NIPs: 1, 2, 4, 9, 11, 12, 15, 16, 20, 26, 28, 33, 40
- suitable for horizontally scaling websocket layer with a load balancer
- defend itself: no rate limits, spam prevention, payments
- i'd like to provide these via some plugin mechanism (workers, maybe?)
- use postgres read replicas
- deno serves websockets
- filters are stored in a sqlite in memory database and mapped to a websocket
- events are persisted in postgres
- when an event is persisted (or an ephemeral event is received) a postgres
NOTIFY event, <event json>is broadcast - all booger processes in the cluster
LISTEN eventand when notified check sqlite for matching filters and send to corresponding websockets
- install postgres and run it (welcome to app programming)
- insall deno (welcome to deno)
- clone booger
- configure env in
.env.defaults - deno task dev
simplicity, ease of use, extensibility, scalability, performance, security
- camari's nostream - heavily inspired booger's validation and integration tests
- everyone working on nostr
- my cat dona, meow