mirror of
https://github.com/0ceanSlim/grain.git
synced 2024-11-23 17:07:13 +00:00
Compare commits
No commits in common. "8bbf44249331a2833445c511d570b8c6062be9c1" and "78ab44a11fa311c8522bda15377339f1b533045c" have entirely different histories.
8bbf442493
...
78ab44a11f
46
readme.md
46
readme.md
@ -2,37 +2,37 @@
|
||||
|
||||
## Go Relay Archetecture for Implementing Nostr
|
||||
|
||||
GRAIN is an open-source Nostr relay implementation written in Go. This project aims to provide an efficient and configurable Nostr relay.
|
||||
GRAIN is an open-source Nostr relay implementation written in Go. This project aims to provide a robust and efficient Nostr relay that currently supports the NIP-01 of the nostr protocol.
|
||||
|
||||
## Features
|
||||
|
||||
- **Dynamic Event Handling**: Capable of processing a wide range of events, categorized by type and kind, including support for event deletion as per NIP-09.
|
||||
- **Configurable and Extensible**: Easily customizable through configuration files, with plans for future GUI-based configuration management to streamline server adjustments.
|
||||
- **Efficient Rate Limiting**: Implements sophisticated rate limiting strategies to manage WebSocket messages, - events, and requests, ensuring fair resource allocation and protection against abuse.
|
||||
- **Flexible Event Size Management**: Configurable size limits for events, with optional constraints based on - event kind, to maintain performance and prevent oversized data handling.
|
||||
- **MongoDB Integration 🍃**: Utilizes MongoDB for high-performance storage and management of events, ensuring data integrity and efficient query capabilities.
|
||||
- **Scalable Architecture**: Built with Go, leveraging its concurrency model to provide high throughput and scalability, suitable for handling large volumes of data and connections.
|
||||
- **Relay Metadata Support (NIP-11)**: Provides relay metadata in compliance with NIP-11, allowing clients to retrieve server capabilities and administrative contact information.
|
||||
- **User-Friendly Front-End**: Includes a web interface that displays recent events and supports potential future enhancements like configuration management.
|
||||
- **NIP-01 Protocol Support**: GRAIN (nearly)fully supports NIP-01 for WebSocket communication.
|
||||
- **Event Processing**: Handles all events by category and kind.
|
||||
- **MongoDB 🍃**: Utilizes MongoDB to store and manage events efficiently.
|
||||
- **Scalability**: Built with Go, ensuring high performance and scalability.
|
||||
- **Open Source**: Licensed under the MIT License, making it free to use and modify.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### MongoDB Server 🍃
|
||||
|
||||
GRAIN 🌾 leverages MongoDB for efficient storage and management of events. MongoDB, known for its high performance and scalability, is an ideal choice for handling large volumes of real-time data. GRAIN 🌾 uses MongoDB collections to store events categorized by kind and ensures quick retrieval and manipulation of these events through its robust querying capabilities.
|
||||
|
||||
You can get the free Community Server edition of MongoDB from the official MongoDB website:
|
||||
[MongoDB Community Server](https://www.mongodb.com/try/download/community)
|
||||
MongoDB provides extensive documentation and support to help you get started with installation and configuration, ensuring a smooth integration with GRAIN.
|
||||
|
||||
## Configuration
|
||||
|
||||
Grain will automatically create the configurations and relay metadata files necessary if they do not already exist when you first run the program.
|
||||
|
||||
They are created in the root directory of Grain. You can change configurations and relay_metadata here. The relay must be restarted for new configurations to take effect.
|
||||
They are created in the root directory of Grain. Feel free to change any coinfigurations you want in these files.
|
||||
|
||||
## Development
|
||||
### TODO
|
||||
|
||||
- configurable event purging
|
||||
- by category
|
||||
- by kind
|
||||
- by time since latest
|
||||
- create whitelist/blacklist functionality
|
||||
for:
|
||||
- valid nip05 domain
|
||||
- pubkey
|
||||
- npub
|
||||
- kind int
|
||||
- kind 1 wordlist
|
||||
|
||||
### Development
|
||||
|
||||
To contribute to GRAIN, follow these steps:
|
||||
|
||||
@ -60,6 +60,4 @@ This project is Open Source and licensed under the MIT License. See the [LICENSE
|
||||
|
||||
Special thanks to the Nostr community for their continuous support and contributions.
|
||||
|
||||
Feel free to reach out with any questions or issues you encounter while using GRAIN.
|
||||
|
||||
Open Source and made with 💜 by [OceanSlim](https://njump.me/npub1zmc6qyqdfnllhnzzxr5wpepfpnzcf8q6m3jdveflmgruqvd3qa9sjv7f60)
|
||||
Feel free to reach out with any questions or issues you encounter while using GRAIN. Happy coding!
|
||||
|
Loading…
Reference in New Issue
Block a user