Coder Social home page Coder Social logo

webfs's Introduction

WebFS

WebFS is a filesystem built on top of the web.

WebFS started after looking for a way to use IPFS as a Dropbox replacement, and not finding any really solid solutions. I also wanted to be able to fluidly move my data between traditional storage providers like Dropbox, MEGA, or Google Drive while testing the waters of new p2p storage systems, like Swarm or Filecoin.

If you have ever thought "x can probably be used as a file system", but didn't want to actually write the file system part, WebFS might be of benefit to you. You can probably turn x into a file system with WebFS by writing a new Store or Cell implementation.

Quick Links

CLI Docs

Volume Specs Docs

ARCHITECTURE.md

Installation

Installs to $GOPATH/bin with make install

Getting Started

A simple volume spec using the filesystem for storage

{
    "cell": {
        "file": "CELL_DATA",
    },
    "store": {
        "fs": "BLOBS",
    }
}

This configuration will create and write to a file ./CELL_DATA and a directory ./BLOBS, so plan accordingly.

To serve the files over http

$ webfs http --root myvolume.webfs
  serving at http://127.0.0.1:7007

Examples

There are examples in the /examples directory. The examples assume you have the webfs executable on your $PATH.

You can also use go run ../../cmd/webfs instead of webfs if you don't want to set that up.

Community

Questions and Discussion happening on Matrix.

Matrix

webfs's People

Contributors

brendoncarroll avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webfs's Issues

Example Dropbox Setup

Create an example showing how to setup a synchronized volume for root directory. This is probably the most common use case.

The objects would be structured like this:

Volume{ RootCell } -> Volume{ CryptoCell{ HTTPCell } } -> Dir

Every device has it's own root volume, which immediately contains a shared networked volume. The secretbox cell is probably ready for use because its so simple, but it requires transporting the key to multiple devices.

File Write

webfsim.FileWriteAt is the function.

Given a file, a buffer, and an offset return a new file with the buffer written starting at that offset.
It might be worth looking at how other file systems do this.

It seems like every write could require replacing 0 or more data blobs, and inserting 0 or 1 data blobs. Will probably require adding some utility methods to the btree or btree iterator.

Not sure how important this. I don't know how many people would be working out of FUSE in the near future. As opposed to importing whole files to read from other devices later.

RWACryptoCell Redesign

RWACryptoCell (Read Write Admin CryptoCell) is the only cell capable of enforcing any permissions. It will likely be the most commonly used higher order cell. As designed key rotation doesn't really work, or maybe it does, but we need to be more clever about allowing changes to the ACL section.

Would be good to get more eyes on this one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.