npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

balkans

v0.1.2

Published

Internet Balkanization Appliance

Downloads

6

Readme

OpenBalkans

Internet Balkanization Appliance Creation Kit

Overview

Internet Balkanization Appliance (IBA) is an implementation of the OpenBalkans protocol, which can manifest as a website, a standalone application, or an actual physical appliance (although there are no known instances of this yet).

From the user's perspective, an IBA is a collection of weblogs. A weblog is a series of posts. Conceptually this is similar to Mastodon, but decentralized (as opposed to federated).

This document describes the OpenBalkans protocol (OpenBP) version 0.

API documentation

Posts

Container: JSON Web Token (JWT)

Signing: ECDSA using P-256 curve, and SHA-256 (ES256)

  • NIST P-256 ≡ ANSI prime256v1 ≡ SEC 2 secp256r1
    • This is not confusing at all
  • Requires RFC 6979
  • Upgrade path: see SafeCurves

Key derivation function (KDF): WarpWallet

ASCII Armor

  • Post key: Base58
  • Other binary data: RFC 4648 base64url with no padding

Post types

Post types are a strict superset of RFC 2046 Media Types.

Data structure

| Name | Type | Required | Comment | --- | --- | --- | --- | openbp | int | Yes | OpenBalkans protocol version, 0 | pk | string | Yes | Post key | docs | list | Yes | One or more hyperlinks to contents | size | int | Yes | Size of contents, bytes | type | string | Yes | Content-Type, Media Type(contents) | chk | string | Yes | Checksum, SHA-256(contents), base64url encoded | rel | set | No | Relational tags | other | object | No | Reply to other post | other.pk | string | Yes | Other post key (In-Reply-To) | other.chk | string | Yes | Checksum, SHA-256(other post's JWT), base64url encoded

Post key

Post key is a concatenation of the following fields:

  • Base58(ObjectId)
  • U+002E FULL STOP
  • Base58(public key)

We use Satoshi's variant of Base58.

Post keys are considered to be globally unique. Any collisions should be treated as a flood attack.

Hyperlinks

Links in the docs field can be the following:

  • HTTP(S) URL
  • RFC 2397 Data URL
  • RFC 6901 JSON Pointer
    "": "jsonpointer",
    "url": "https://httpbin.org/headers",
    "pointer": "/headers/User-Agent"

Relational tags

| Rel | Type | Comment | --- | --- | --- | collection | application/json | Collection of posts | self | application/ld+json | User profile | self, userpic | image/jpeg, image/png | User profile picture | upd_pk | application/octet-stream | Updated public key

User Profiles

Posts with 'self' in the rel field are associated with the user account, and aren't a part of any content feed.

A user profile is a JSON-LD post of @type Person.