G.R.A.I.N. 🌾
Go Relay Architecture for Implementing Nostr
Grain is a highly configurable nostr relay implementation written in GOthat uses MongoDB (for now) as a database for nostr Events. It offers the flexibility to meet various use cases with extensive rate and resource limits, whitelist and blacklist configurations, and many other variables to ensure reliability and performance.
Key Features
- Dynamic event handling with support for event deletion as per NIP-09.
- Highly configurable through YAML-based settings for diverse use cases.
- Efficient rate limiting for WebSocket messages, events, and requests.
- Robust blacklisting and whitelisting capabilities for enhanced control.
- MongoDB integration for scalable, high-performance storage.
- Scalable architecture built with Go, ideal for high-throughput scenarios.
Configuration Preview
Grain is designed for simplicity and flexibility. You can customize settings to suit your requirements by editing the YAML configuration files.
I created Grain because existing solutions didn’t meet my expectations for flexibility. Feedback and contributions are always welcome to help improve this project!