From 6e5baf326b76094ec2146dbc87b9d4f6f9909e72 Mon Sep 17 00:00:00 2001 From: Tony Giorgio Date: Sat, 18 Feb 2023 13:39:17 -0600 Subject: [PATCH] Documentation and images --- README.md | 10 +++++++++- docs/images/blastr-diagram.png | Bin 0 -> 31301 bytes 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/images/blastr-diagram.png diff --git a/README.md b/README.md index 9838b14..6390dd8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ # blastr -A nostr cloudflare workers proxy relay that publishes to all known relays +A nostr cloudflare workers proxy relay that publishes to all known online relays. + +![blastr diagram](./docs/images/blastr-diagram.png) + +This takes advantage of the high availabilty of cloudflare serverless workers on the edge that are rust wasm-based with 0ms cold starts. Learn more about [cloudflare workers](https://workers.cloudflare.com/). + +This is write only for now and is compatible with nostr clients but also features a simple POST api endpoint at `/event`. All events get queued up to run in batches by another worker that spins up every 30s if there's any events lined up, or once a certain amount of events are queued up. + +This will help ensure that your events are broadcasted to as many places as possible. ## Development diff --git a/docs/images/blastr-diagram.png b/docs/images/blastr-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..4b46f08b623e106055b9e9b3722b3c52a390f5ed GIT binary patch literal 31301 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