Skip to content

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

Open
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions