Giter Club home page Giter Club logo

lnb-extensions's Introduction

LNbits Vetted Extensions

Official registry for vetted LNbits extensions

To submit an extension to this registry add your manifest into the extensions.json file in this repository.

Important

Only submit fully working extensions, the review process is not intended to improve the extension code.

Do not add dependencies, LNbits has plenty of dependencies you can use.

The easier an extension is to review, the quicker the review process will be.

Manifest format

The file MUST use the extensions format:

{
    "id": "gerty",
    "repo": "https://github.com/lnbits/gerty",
    "name": "Gerty",
    "version": "0.1.2",
    "short_description": "Your bitcoin assistant",
    "icon": "https://raw.githubusercontent.com/lnbits/gerty/main/static/gerty.png",
    "archive": "https://github.com/lnbits/gerty/archive/refs/tags/0.1.2.zip",
    "hash": "baff0b6162ffb65cc0b4c721a4aa40a7d3d48acd55a3e344cba3eb1d35cf2074"
},

For an exensions local manifest.json use the repos format:

{
    "repos": [
        {
            "id": "gerty",
            "organisation": "lnbits",
            "repository": "gerty"
        }
    ]
}

Paid extensions

It is possible for developers to require a payment for their extensions. In order to do so an extension release must have this field:

   "pay_link": "# payment URL"

Example:

{
    "id": "testext",
    "repo": "https://github.com/lnbits/testext",
    "name": "Test Extension",
    "version": "0.5",
    "short_description": "Private Test Extension",
    "icon": "https://raw.githubusercontent.com/lnbits/example/main/static/bitcoin-extension.png",
    "archive": "https://legend.lnbits.com/paywall/download/BNv6XjB4DKLBQt7q5w4HuG",
    "pay_link": "https://legend.lnbits.com/paywall/api/v1/paywalls/invoice/BNv6XjB4DKLBQt7q5w4HuG",
    "hash": "455527407fcfdc5e8aba93f16802d1083d36dcdfdde829f919cee07420791d61"
}

The Paywall LNbist Extension can be used to serve the extension zip file.

If you do not want to use the Paywall LNbits Extension to server your extension, but instead you want to use your own paywall, then the pay_link endpoint must follow these specifications:

HTTP Request HTTP Response Description
GET pay_link
{
    "amount": 5
}
Get the amount in `sats` required by this extension release.
GET pay_link?amount=5
{
    "payment_hash": "04c33f37d01aff...fd7c407a",
    "payment_request": "lnbc50n1pju...n7h8gucqn2cgau"
}
Request an invoice for the specified amount (or higher).
WS pay_link/{payment_hash}
{"paid": true|false}
Open a websocket to be notified when the invoice has been paid.

In order to download the file one must add the payment_hash and an version (optional) query parameters to the archive URL. Eg:

GET https://legend.lnbits.com/paywall/download/BNv6XjB4DKLBQt7q5w4HuG?payment_hash=3bf...7ec&version=v0.1

Getting sha256 checksum for a release

$ wget -O - https://github.com/lnbits/withdraw/archive/refs/tags/0.1.1.zip 2> /dev/null | sha256sum | cut -d" " -f 1
baff0b6162ffb65cc0b4c721a4aa40a7d3d48acd55a3e344cba3eb1d35cf2074

Lighter ZIP archive

  • documentation, tests and other type of files should not be included in the zip archive generated when a GitHub release is created
  • keep the README.md and LICENSE files in the zip as these are required!
  • in order to exclude these files one must:
    • create a .gitattributes file (on the top level of the repo)
    • add a line for the ignored files/dirs: tests/ export-ignore

Checking the changes before sending a pull request

  • after editing the manifest.json file in this repo you should run python3 check.py as a sanity check
  • you can run python3 check.py foo bar only to run sanity checks on extensions named foo and bar

util for cloning and pulling all extensions

cloning all extensions into extensions dir. requires jq to be installed.

sh util.sh clone

pulling all extensions from extensions dir

sh util.sh pull

get lnbits env variables for all extensions

sh util.sh env

update a extension in extensions.json with id and version

sh util.sh update_extension example v0.4.2

Example video on how to release a extension into this repo

this uses a github workflow like this: https://github.com/lnbits/example/blob/main/.github/workflows/release.yml

lnbits-release.mp4

Integration Tests

setup

make install-jmeter

configure

make sure lnbits is running and start the mirror server

make start-mirror-server

run

make test

lnb-extensions's People

Contributors

dni avatar arcbtc avatar motorina0 avatar callebtc avatar prusnak avatar blackcoffeexbt avatar talvasconcelos avatar alanbits avatar evd0kim avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.