/nostr

A pure Erlang implementation of the nostr protocol

Primary LanguageErlangMIT LicenseMIT

nostr

Erlang Punch Nostr License Erlang Punch Nostr Top Language Erlang Punch Nostr Workflow Status (main branch) Erlang Punch Nostr Last Commit Erlang Punch Nostr Code Size (bytes) Erlang Punch Nostr Repository File Count Erlang Punch Nostr Repository Size

An implementation of nostr in pure Erlang using OTP stack with minimal dependencies. Here the list of features offered by this application:

  • A library defined in module nostrlib

  • A client defined in module nostr_client

  • A relay defined in module nostr_relay

  • A common interface called nostr to play with previously defined modules.

Disclamer

This project is in active development and cannot provide a stable application. This application should be used only for test at the moment.

NIP Support

Here the list of currently supported nips:

Other Implementation (required by nostr)

Build

The code can be compiled using rebar3 Erlang project manager.

$ rebar3 compile

Test

The current implementation is tested using eunit and common_test both directly integrated with all default Erlang/OTP release. cover is enabled by default to have an idea of the coverage of the test. An alias called check has been created to help using these tools.

$ rebar3 check

Documentation

A developer documentation is provided using edoc and can be generated on demand (automatically created if using rebar3 check alias).

$ rebar3 edoc

This project has been created to explain how to create an Erlang/OTP from scratch using only a release and few dependencies. The design choices for the infrastructure, data-structures and algorithms can be found in in notes directory. Those notes can be exported in html, epub, pdf or plaintext using make.

$ make

The documents will be generated in _build/notes directory.

Development

For the developers, this project is using asdf. The tools used are listed in .tool-versions file. To bootstrap your system, install asdf and just execute this command in the repository:

$ git clone https://github.com/erlang-punch/nostr
$ cd nostr
$ asdf install

Usage

This project is a work in progress, and no usages are currently displayed here.

References and Resources