/record-node

Library, CLI and REST API for Record.

Primary LanguageJavaScriptMIT LicenseMIT

Record Logo

Record Node

MIT License JavaScript Style Guide standard-readme compliant CircleCI Status FOSSA Status

Library, CLI and REST API for Record.

Record is a proof of concept immutable distributed system for audio files. Built entirely on IPFS, user data is stored in a scuttlebot-esque immutable log via IPFS-Log & OrbitDB. Bootstraping/peer discovery is done via bitboot.

At it's core, the application intends to be a media library management & playback system akin to beets with the ability to join various sources of music like tomahawk player. By building everything on top of IPFS, it can become a connected network of libraries, opening the door to many other possibilities (i.e. soundcloud & musicbrainz), while still being entirely distributed and thus being able to function permanently.

Note: View the UI/UX repo for more information.

Install Dependencies

yarn install

Install Chromaprint & FFmpeg

Note: fpcalc (chromaprint) must be installed to be able to import audio files.

OSX using Homebrew
brew install chromaprint ffmpeg
Ubuntu
sudo apt-get install libchromaprint-tools

Usage

Running

yarn start

CLI

wip

Daemon

wip

Module

const RecordNode = require('record-node')
const createIPFSDaemon = require('record-ipfsd')

const ipfsd = await createIPFSDaemon({
    repo: repoPath,
    ipfsBin: ipfsBinPath
})

const node = new RecordNode()
node.on('ready', async () => {
    const log = await node.log.get() // or node.log.get(record.address)
})
await node.init(ipfsd)

API

RecordNode Constructor

const record = new RecordNode(options)

View default options at config.js. Use the options argument to specify configuration. It is an object with any of these properties:

options.api
Type Default
boolean false
object { port: 3000 }

Enable http api (Default: undefined)

options.bitboot
Type Default
object { enabled: true }

Enable finding peers via bitboot

License

MIT

FOSSA Status