Home

Awesome

Build GitHub Release Maven Central License

<p align="center"> <img src="https://github.com/theborakompanioni/nostr-spring-boot-starter/blob/master/docs/assets/images/logo.png" alt="Logo" width="255" /> </p>

nostr-spring-boot-starter

Spring boot starter projects for building Nostr applications. Whether you're building your own client or custom relay software, this framework provides most of what you need to write scalable and efficient solutions effortlessly.

Note: Most code is still experimental - this is work in progress.

Planned:

nostr-proto

See nostr-proto for protobuf definitions of core nostr concepts used in all modules.

message Event {
  bytes id = 1 [json_name = "id"];
  bytes pubkey = 2 [json_name = "pubkey"];
  uint64 created_at = 3 [json_name = "created_at"];
  uint32 kind = 4 [json_name = "kind"];
  repeated TagValue tags = 5 [json_name = "tags"];
  string content = 6 [json_name = "content"];
  bytes sig = 7 [json_name = "sig"];
}

[...]

Table of Contents

Install

Download from Maven Central.

Gradle

repositories {
    mavenCentral()
}
implementation "io.github.theborakompanioni:nostr-proto:${bitcoinSpringBootStarterVersion}"

Examples

This project contains various examples that are stand-alone applications showing basic usage of the functionality provided.

ApplicationDescription
nostr-clientA simple Nostr client example application that subscribes to all kind 1 notes.
nostr-relayA simple Nostr relay example application.
nostr-shellA simple Nostr shell example application, e.g. to "mine" notes (NIP-13).

Development

Requirements

Build

./gradlew build -x test

Test

./gradlew test integrationTest --rerun-tasks --no-parallel

Run full test suite (including load tests):

CI=true ./gradlew test integrationTest e2eTest --rerun-tasks --no-parallel

Contributing

All contributions and ideas are always welcome. For any question, bug or feature request, please create an issue. Before you start, please read the contributing guidelines.

Resources


License

The project is licensed under the Apache License. See LICENSE for details.