Home

Awesome

orbit-core

npm version CircleCI Status Gitter Matrix

Communication protocol on IPFS

Orbit is a serverless, distributed, p2p communication library and protocol that enables feed-based information sharing, such as real-time chat, in the IPFS peer-to-peer network.

This repository is the core library of Orbit. This library is intended to be used in your Node.js or Browser applications.

Used in the various Orbit projects:

Table of Contents

Install

This module uses npm and node.

npm install orbit_

Usage

See examples/browser/index.html for a more detailed example.

'use strict'

const Orbit = require('orbit_')

const ipfs = new Ipfs()

ipfs.on('ready', () => {
  const orbit = new Orbit(ipfs)

  const username = 'Example Bot'
  const channel = 'HelloWorld'

  orbit.events.on('connected', () => {
    console.log(`-!- Orbit connected`)
    orbit.join(channel)
  })

  orbit.events.on('joined', channelName => {
    orbit.send(channelName, '/me is now caching this channel')
    console.log(`-!- Joined #${channelName}`)
  })

  // Listen for new messages
  orbit.events.on('entry', (entry, channelName) => {
    const post = entry.payload.value
    console.log(`[${post.meta.ts}] <${post.meta.from.name}> ${post.content}`)
  })

  // Connect to Orbit network
  orbit.connect(username).catch(e => console.error(e))
})

API

See API documentation for full details.

Development

Install Dependencies

git clone https://github.com/orbitdb/orbit-core.git
cd orbit-core/
npm install

Run example development environment

npm run dev

Run Tests

npm test

Build Library and Distributables

npm run build

Distributable (ES5 minified for browsers) will be located in dist/.

Contribute

We would be happy to accept PRs! If you want to work on something, it'd be good to talk beforehand to make sure nobody else is working on it. You can reach us on Gitter, or in the issues section.

We also have regular community calls, which we announce in the issues in the @orbitdb welcome repository. Join us!

If you want to code but don't know where to start, check out the issues labelled "help wanted".

For specific guidelines for contributing to this repository, check out the Contributing guide. For more on contributing to OrbitDB in general, take a look at the @OrbitDB welcome repository. Please note that all interactions in @OrbitDB fall under our Code of Conduct.

License

MIT © 2016-2019 Protocol Labs Inc., Haja Networks Oy