All Projects → streamr-dev → network

streamr-dev / network

Licence: other
Monorepo containing all the main components of Streamr Network.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to network

network-monorepo
Monorepo containing all the main components of Streamr Network.
Stars: ✭ 223 (-57.28%)
Mutual labels:  protocol, peer-to-peer, decentralized, pubsub, streamr, streamr-client
streamr-client-javascript
JS library for interacting with Streamr APIs: publishing and subscribing to data, creating streams, etc.
Stars: ✭ 35 (-93.3%)
Mutual labels:  decentralized, pubsub, streamr
core-api
Streamr Core backend
Stars: ✭ 52 (-90.04%)
Mutual labels:  decentralized, pubsub, streamr
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (-83.91%)
Mutual labels:  peer-to-peer, decentralized, pubsub
Purple
Official Rust implementation of the Purple Protocol
Stars: ✭ 85 (-83.72%)
Mutual labels:  protocol, peer-to-peer, decentralized
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+2806.51%)
Mutual labels:  protocol, peer-to-peer, decentralized
Unstoppable Wallet Ios
A secure and decentralized Bitcoin and other cryptocurrency wallet for iPhone. Supports Bitcoin, Ethereum, EOS, Binance Chain, Bitcoin Cash, DASH, ...
Stars: ✭ 180 (-65.52%)
Mutual labels:  peer-to-peer, decentralized
Credits
Credits(CRDS) - An Evolving Currency For An Evolving Society
Stars: ✭ 14 (-97.32%)
Mutual labels:  protocol, decentralized
Motoro
Smart contracts for decentralized rentals of vehicles.
Stars: ✭ 96 (-81.61%)
Mutual labels:  protocol, decentralized
Lnd
Lightning Network Daemon ⚡️
Stars: ✭ 5,623 (+977.2%)
Mutual labels:  protocol, peer-to-peer
Memo
The memo elastic and resilient key-value store.
Stars: ✭ 111 (-78.74%)
Mutual labels:  peer-to-peer, decentralized
Kadence
⚠️ KADENCE HAS MOVED TO GITLAB ⚠️
Stars: ✭ 363 (-30.46%)
Mutual labels:  protocol, peer-to-peer
trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (-1.92%)
Mutual labels:  peer-to-peer, decentralized
Unstoppable Wallet Android
A secure and decentralized Bitcoin and other cryptocurrency wallet for Android phones. Supports Bitcoin, Ethereum, EOS, Binance Chain, Bitcoin Cash, DASH, ...
Stars: ✭ 165 (-68.39%)
Mutual labels:  peer-to-peer, decentralized
Ensichat
Project discontinued
Stars: ✭ 143 (-72.61%)
Mutual labels:  peer-to-peer, decentralized
Bitchatclient
Technitium Bit Chat, a secure, peer-to-peer, instant messenger!
Stars: ✭ 111 (-78.74%)
Mutual labels:  peer-to-peer, decentralized
Fluence
Peer-to-peer computing protocol and licensing system
Stars: ✭ 453 (-13.22%)
Mutual labels:  protocol, decentralized
Offset
Offset payment engine
Stars: ✭ 152 (-70.88%)
Mutual labels:  protocol, decentralized
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (-95.79%)
Mutual labels:  peer-to-peer, decentralized
Brightid
Reference mobile app for BrightID
Stars: ✭ 101 (-80.65%)
Mutual labels:  peer-to-peer, decentralized

Streamr

Network

Monorepo containing all the main components of Streamr Network.

Table of Contents

Packages

User-Facing

Internal

NPM scripts

Node.js 16.13.x is the minimum required version. Node.js 18.12.x, NPM 8.x and later versions are recommended.

The monorepo is managed using npm workspaces.

Installation on an Apple Silicon Mac requires additional steps, see install-on-apple-silicon.md.

Important: Do not use npm ci or npm install directly in the sub-package directories.

Bootstrap all sub-packages

The go-to command for most use cases.

To install all required dependencies and build all sub-packages (linking sub-packages together as needed):

# from top level
npm run bootstrap

Bootstrap a single sub-package

To install the required dependencies and build a specific sub-package:

# from top level
npm run bootstrap-pkg --package=$PACKAGE_NAME

Install dependencies only

To only install required dependencies and link sub-packages together (and skip build phase):

# from top level
npm ci

Build

To build all sub-packages:

# from top level
npm run build

Build a sub-package

To build a specific sub-package:

# from top level
npm run build --workspace=$PACKAGE_NAME

Clear caches and built files

To clear all caches and remove the dist directory from each sub-package:

# from top level
npm run clean-dist

Clean all

To removes all caches, built files, and node_modules of each sub-package, and the top-level node_modules:

# from top level
npm run clean

Install git hooks

To install git hooks (e.g. Husky for conventional commit validation):

npm run install-git-hooks

Add a dependency into a sub-package

Manually add the entry to the package.json of the sub-package and run npm run bootstrap-pkg $PACKAGE_NAME.

Alternatively, run:

npm install some-dependency --workspace=$PACKAGE_NAME

List active versions & symlinks

Check which sub-packages are currently being symlinked.

# from top level
npm run versions

This lists sub-packages & their versions on the left, linked sub-packages are columns. If the package on the left links to the package in the column, it shows a checkmark & the semver range, otherwise it shows the mismatched semver range and prints a warning at the end. It prints the version ranges so you can double-check that they're formatted as you expect e.g. ^X.Y.Z vs X.Y.Z

image

Release

utils, test-utils, protocol, network-tracker, network-node, client, cli-tools

All the above packages should be released at the same time.

  1. git checkout main
  2. git pull
  3. ./update-versions.sh <SEMVER> E.g. ./update-versions.sh 7.1.1
  4. npm run clean && npm install && npm run build && npm run versions
  5. Look at the output of the above and ensure all versions are linked properly (i.e. no yellow or red markers)
  6. Update client and cli-tool CHANGELOG.md
  7. If releasing a major / minor version, update API docs link in packages/client/README.md.
  8. Add relevant files to git staging
  9. git commit -m "release(client, cli-tools): vX.Y.Z"
  10. git tag client/vX.Y.Z
  11. git tag cli-tools/vX.Y.Z
  12. Push to main git push origin
  13. Push to tag git push origin client/vX.Y.Z
  14. Push to tag git push origin cli-tools/vX.Y.Z
  15. At this point we are to do the actual release
  16. Clean and rebuild project with npm run clean && npm run bootstrap
  17. Then we do actual publishing of packages with ./release.sh <NPM_TAG>. Use argument beta if publishing a beta version. Use latest instead when publishing a stable version.
  18. Update client docs if major or minor change:
# Generate & upload API docs (if a major/minor version update)
cd packages/client
npm run docs
aws s3 cp ./docs s3://api-docs.streamr.network/client/vX.Y --recursive --profile streamr-api-docs-upload

broker

Broker is released independently of other packages because it follows its own versioning for the time being.

git checkout main
cd packages/broker
npm version <SEMVER_OPTION>
git add package.json package-lock.json
git commit -m "release(broker): vX.Y.Z"
git tag broker/vX.Y.Z
git push --atomic origin main broker/vX.Y.Z

npm run build
npm publish

Docker release

After pushing the broker tag, GitHub Actions will build and publish the Docker image automatically if tests pass.

Tag latest

GitHub Actions will not update the latest tag. This must be done manually. Keep in mind that latest should always refer to the latest stable version.

To update latest do the following.

  1. Find out the sha256 digests of both the amd64 and arm64 builds for a vX.Y.Z tag. This can be done via command-line docker buildx imagetools inspect streamr/broker-node:vX.Y.Z or you can check this from docker hub website under https://hub.docker.com/r/streamr/broker-node/tags.
  2. Then we shall create the manifest by running the below. Remember to replace <SHA-AMD64> and <SHA-ARM64> with real values.
docker manifest create streamr/broker-node:latest \
    --amend streamr/broker-node@sha256:<SHA-AMD64> \
    --amend streamr/broker-node@sha256:<SHA-ARM64>
  1. Then we publish the manifest with
docker manifest push streamr/broker-node:latest
  1. Then we are ready. It would be wise to double-check this by checking https://hub.docker.com/r/streamr/broker-node/tags.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].