Skip to content

theborakompanioni/nostr-spring-boot-starter

Repository files navigation

Build GitHub Release Maven Central License

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 throughout most modules (e.g. events, filters, etc.).

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.

Application Description
nostr-client A simple Nostr client example application that subscribes to all kind 1 notes.
nostr-relay A simple Nostr relay example application.
nostr-shell A simple Nostr shell example application, e.g. to "mine" notes (NIP-13).

Development

Requirements

  • java >=21
  • docker

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 --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.