orbit-db

Distributed, peer-to-peer database on IPFS.

orbit-db is a serverless, distributed, peer-to-peer database. orbit-db uses IPFS as its data storage and IPFS Pubsub to automatically sync databases with peers. It's an eventually consistent database that uses CRDTs for conflict-free database merges making orbit-db and excellent choice for offline-first applications.

Data in orbit-db can be stored in a

  • Key-Value Store
  • Eventlog (append-only log)
  • Feed (add and remove log)
  • Counters

This is the Javascript implementation and it works both in Node.js and Browsers.

npm version CircleCI Status Project Status

Usage

npm install orbit-db ipfs-api
const IpfsApi = require('ipfs-api')
const OrbitDB = require('orbit-db')

const ipfs = IpfsApi('localhost', '5001')
const orbitdb = new OrbitDB(ipfs)

const db = orbitdb.eventlog("feed name")

db.add("hello world")
  .then(() => {
    const latest = db.iterator({ limit: 5 }).collect()
    console.log(latest.join("\n"))
  })

API

See API documentation for the full documentation.

Examples

Install dependencies

git clone https://github.com/haadcode/orbit-db.git
cd orbit-db
npm install

Browser example

npm run build:examples
npm run examples:browser

Check the code in examples/browser/index.js.

Node.js example

npm run examples:node

Eventlog

Check the code in examples/eventlog.js and run it with:

LOG=debug node examples/eventlog.js

Key-Value

Check the code in examples/keyvalue.js and run it with:

LOG=debug node examples/keyvalue.js

Development

Run Tests

npm test

Build

npm run build

Benchmark

node examples/benchmark.js

Background

Check out a visualization of the data flow at https://github.com/haadcode/proto2 or a live demo: http://celebdil.benet.ai:8080/ipfs/Qmezm7g8mBpWyuPk6D84CNcfLKJwU6mpXuEN5GJZNkX3XK/.

TODO

  • list of modules used
  • orbit-db-pubsub
  • crdts
  • ipfs-log

Contributing

Issues, comments, feedback, feature requests and PRs highly welcome!

License

MIT ©️ 2016 Haadcode

Description
No description provided
Readme 11 MiB
Languages
JavaScript 94.2%
HTML 5.4%
Makefile 0.3%
Dockerfile 0.1%