Simple graph storage designed for universal interoperability
CoffeeScript JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
src
test
.gitignore
.npmignore
.travis.yml
MIT-LICENSE.md
README.md
circle.yml
package.json
webpack.config.js
yarn.lock

README.md

Nodesphere

Objectives

Nodesphere is an interchange format for node networks. It has three primary objectives:

  1. Create interoperability among graph visualization interfaces
  2. Provide adaptors to connect these interfaces to personal data ecosystems, including social network data, online drives, and ultimately, any public or private data
  3. Abstract data storage and retrieval, allowing transitions from traditional server & database systems toward secure, distributed public and private storage, as these systems become practical and performant

Philosophical

Everything we want to share is a graph, which can be seen as a group of knowledge nodes. We think of this as a "sphere" of nodes; thus nodesphere. Nodesphere is designed to help enable the curation, sharing, visualization, and navigation of all your graph data.

Examples

const nodesphere = require('nodesphere')

IPFS (InterPlanetary File System)

nodesphere.adaptor.Ipfs.create({protocol: 'http', host: 'ipfs.io', port: 80})
.then((ipfs) => {
  return ipfs.fetch({rootNodeId: 'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'})
}).then((sphere) => {
  console.log(sphere.data())
})

// prints something like:
// {
//   nodes: {
//     QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr: {},
//     QmeJTXoV3NeYjScPNAbzk81z9qa7kgb91AnxTgQicpGQXs: { name: '2010', size: 46656, ipfsType: 1 },
//     QmYg9SGT2qBu8BL7NbbT3Wzh1CXyJVGSMFuRLPcLquRhmX: { name: 'index.html', size: 134539, ipfsType: 2 },
//     ...
//   },
//   edges: {
//     'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr -> QmeJTXoV3NeYjScPNAbzk81z9qa7kgb91AnxTgQicpGQXs': { start: [Object], end: [Object] },
//     'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr -> QmYg9SGT2qBu8BL7NbbT3Wzh1CXyJVGSMFuRLPcLquRhmX': { start: [Object], end: [Object] },
//     ...
//   }
// }

Other Examples

For examples of usage in both Node.js and browser, see: https://github.com/nodesphere/nodesphere/tree/master/examples

You can also see examples running live in the browser:

These are intentionally written in simple JS directly in the page source.

Project Genesis

Nodesphere comes from Enlightened Structure and Superluminal ⨕ Systems.

Nodesphere is being developed primarily in the context of the Core Network project.

Development

Build Status

Nodesphere is currently pre-alpha, and things are likely to change. We don't recommend you use it in production yet.

Nodesphere had a complete rewrite on a fresh branch with a new history as of v0.4.0. The older version can be found on the 0.3.x tree.

In the browser

If you are creating a client side application using Nodesphere, consider using polyfills to ensure maximum browser compatibility. For example, include this line before all other javascript tags:

<script src="//cdn.polyfill.io/v1/polyfill.min.js"></script>

We build with Webpack. Browserify or similar should work fine too.