ErlangPunch 0fb83a4e52 Create the first structure of nostr application
This commit is a huge one. It had a lot of feature
and design the whole project. Documentation, tests,
notes, articles, introduction page and main codes
have been added.

All required dependencies have been added, thoas,
gun, and cowboy. Those versions have been fixed.

The current client implementation can use a websocket
to fetch the event from a relay, the connection can
also be closed.

Some functions and modules have been created to permit
to encode and decode payloads from/to a relay/client.
This is not correctly done, yet.

A part of nip/01 is already implemented but requires
a better structure, better testing and better
documentation as well.

The parameters for rebar3 and the tools like compilers
have been created to ensure a good quality for the
produced code.

A Makefile can be used to export the notes/articles in
pdf, epub, plaintext or html formats.
2023-02-25 13:11:40 +00:00
2023-02-10 15:36:34 +01:00
2023-02-03 07:20:49 +00:00

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:

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

Description
No description provided
Readme MIT 5.5 MiB
Languages
Erlang 99.1%
Makefile 0.7%
Python 0.2%