# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
tandem
Nostr relay, written in Go.
NIP Compliance
- NIP-01
- NIP-02: Follow List
- NIP-05: Mapping Nostr keys to DNS-based Internet Identifiers
- NIP-09: Event Deletion Request
- NIP-11: Relay Information Document
- NIP-13: Proof of Work
- NIP-17: Private Direct Messages
- NIP-29: Relay-based Groups
- NIP-40: Expiration Timestamp
- NIP-42: Authentication of clients to relays
- NIP-45: Event Counts
- NIP-50: Search Capability*
- NIP-56: Reporting
- NIP-64: Chess (Portable Game Notation)
- NIP-65: Relay List Metadata**
- NIP-70: Protected Events
- NIP-86: Relay Management API
- NIP-96: HTTP File Storage Integration
* = Search is not ordered by quality or treated differently for each kind. Applies only to content field and no special syntax is used (not even * for wildcard)
** = tandem does not currently disallow any users from submitting lists
Goals
- Easy to deploy: anyone's Uncle Jim with any sliver of IT knowledge should be able to deploy a relay.
- Easy to moderate: blocking IPs, whitelisting pubkeys, setting up specific moderation rules, all should be achievable without code knowledge.
- Community driven: nostr's main usecase is as a global townsquare but it can also be used to create small communities. tandem's main goal is to serve the latter usecase.
Roadmap
- Define a roadmap
Usage
Prerequisites
Installation
Define a configuration file:
[http]
host=localhost # env var: HTTP_HOST
port=5150 # env var: HTTP_PORT
[log]
level=info # env var: LOG_LEVEL, one of debug|info|error, default: info
log_file_path=/path/to/file.log # env var: LOG_FILE_PATH, optional
[storage]
uri="edgedb://edgedb:<password>@localhost:10701/main" # env var: STORAGE_URI, replace with your edgedb credentials, one of edgedb|memory
skip_tls_verify=true # env var: STORAGE_SKIP_TLS_VERIFY, default: false
Run:
$ tandem -config <path_to_toml_file>
Tests
with edgedb
$ STORAGE_URI=<your_uri> go test -v -tags=storage,edgedb ./...
with memorydb
$ STORAGE_URI="memory://" go test -v -tags=storage,memory ./...
without storage
$ go test -v ./...