/cfsnet

The Conflict-Free File System Network

Primary LanguageJavaScriptMIT LicenseMIT

CFSNET

Build Status

Abstract

The Conflict-Free File System Network, or CFSNET, is a distributed, decentralized, and peer-to-peer system for securely authoring, tracking, and replicating content in self contained file system archives. This is some what equivalent to how Linux file systems are distributed through Docker containers and how the POSIX.1-1988 Tar file format represents archive files as binary objects (Tarballs).

INSERT WHITE PAPER/TECHNICAL DOCUMENT LINK HERE

Summary

CFSNET creates a UNIX like file system implementing a subset of the Filesystem Hierarchy Standard. CFSNET file systems are partitioned into smaller Hyperdrive instances.

CFSNET builds on Hyperdrive in similar ways Dat has built on it, but CFSNET overlays a POSIX like file system that is partitioned into distinct Hyperdrive file systems that can be replicated independently. The API is consistent with Hyperdrive while exposing a Promise based API as well.

Status

This project is in active development.

Dependencies

  • Node
  • pkg-config (brew install pkg-config for Macos)

Installation

$ npm install cfsnet

Example

const { createCFS } = require('cfsnet/create')
const id = 'my-file-system'
const cfs = await createCFS({ id })

// pipe file system events to stdout from `/var` partition
cfs.createReadStream('/var/log/events', { live: true }).pipe(process.stdout)

// write hello.txt to HOME
await cfs.writeFile('./hello.txt', 'world') // will write to /home/hello.txt

// read /home/hello.txt
const buffer = await cfs.readFile('./hello.txt') // will read ./hello.txt

// read HOME (~) directory
console.log(await cfs.readdir('~/hello.txt'))

Contributing

See Also

License

MIT