Description
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 set
s?) 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):