node package manager

slick-io

Slick

Build Status

Build your own backup

Usage

Slick offers an encrypted file-system where long-term storage is offloaded to a Cloud provider of your choosing. In addition to data being encrypted, the metadata describing your file-system is also encrypted.

Slick can easily be included in a nodejs project to store data. Let's try it out!

const slick = require('slick-io');
slick.configure((setup, done) => {
  console.log("configuring slick for the first time");
 
  setup.meta.useMemory();
  setup.meta.useDisk({size: 52428800});    // 50mb limit 
  setup.meta.useAcd();
 
  setup.bulk.useMemory();
  setup.bulk.useDisk({size: 10737418240}); // 10gb limit 
  setup.bulk.useAcd();
 
  done();
}).on('fatal', function(error) {
  console.error('got a fatal error', error);
}).on('warning', function(warning) {
  console.error('got a warning', warning);
}).whenReady(() => {
  slick.runServices({
    web: { port: 8091 },
    fuse: { mounts: { 'vol': {mountPoint: 'mnt/vol'}}}
  });
 
  slick.web.start({port: ...});
  slick.fuse.mount('vol');
  slick.fuse.start();
 
  const vol = slick.volumes.volume('vol');
  vol
    .create()
    .add('./README.md', '/', (err) => {
      if (err) console.error('there was an error', err);
      console.log('all done');
    });
});
slick.start();

There is currently no documentation for this interface, but you can look at lib/volumes/index.js and lib/volumes/interfaces.js for some hints.