Skip to content

PeerBox, a distributed app for storing and sharing files #1

@JonKrone

Description

@JonKrone

PeerBox

a distributed web app for storing and sharing files

There is a lot of potential for a Dropbox-like 'cloud' storage app built on IPFS technologies. With IPFS performing most of the heavy lifting of a traditional file sharing and storage application, it is a great domain to demonstrate the ecosystem as a foundation for DApps.

What

PeerBox is a website where you can upload, download, and share content with yourself or anyone else. Content is uploaded under namespaces, or bins, like #interplanetary and can be public or private (behind keys). You can share specific files or entire bins and revert changes to a bin. You can be anonymous or not. That's the core.

Why

The foundation of cloud file storage apps is pretty much uploading and downloading with a bunch of additional features on top like sharing, access controls, in-app editing, and local <-> cloud sync. It seems like a fairly explored feature space (albeit with a day's research) where our work on decentralized protocols and incentive mechanisms like FileCoin gives us some unique differences.

How

With the research and work that's going on with dynamic-data, this is a good app to explore and push our peer-* building blocks and work on CRDT, ACL, and identity primitives. The core bin/content representation can utilize new or existing (a permutation of treedoc or one of the sets?) CRDTs along with ACL work to enable users and permissions (If I understand those correctly). We should build from what we've learned from PeerPad where we can but try to refine and push it.

Front-end wise, the client would follow our web app patterns: React + CSS 😅, maybe Redux. There are two main pages to the app: a homepage for the website and a Bin page. Authenticated users would also have an overview page displaying a user's accessible bins.

There are a lot of interesting integrations such as using FileCoin to ensure storage and provision of content, local <-> cloud sync through IPFS-Desktop, displaying a local node's pinned files like a web-view via IPFS-Companion, and web-based editing of PeerPad-able files.

I tried to keep this high level as I figured it's best to raise the idea before diving into details. I'm still ramping upipfs-shipyard and dynamic-data work so would love your thoughts.

What do you think? Worth pursuing?

A screenshot of an example UI (Dropbox's):

dropbox

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions