-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PeerBox, a distributed app for storing and sharing files #1
Comments
FYSA we are currently designing user interfaces related to "File Browser" in new WebUI, relevant threads being (feel free to join, read existing ideas or provide examples of good GUIs for inspiration):
When done, we will implement these refined interfaces in the new WebUI and Companion, but these building blocks and established design patterns could prove to be useful elsewhere as well. If GUI design work is reused, I feel this could enable "PeerBox" work to focus more on the research side related to CRDTs, ACLs and sync. An open question to me is if "PeerBox" should be a separate dapp spawning own node, communicating with user's node via Thoughts? |
@lidel Thanks for the briefing! I've just spent some hours exploring the conversations that have happened over the past month. I'm still working through it but my thoughts on your thoughts so far are: First, your open question on whether these features should just be a standard set of features in existing apps. Yeah, you guys have already done a lot of work with this general idea! Reusing some of that design work would be excellent and I think work on ACL, encryption, and some type of sync would be great integrations. An app like PeerBox could connect to a gateway or a local node but is intended to communicate with the rest of the network, not necessarily view local content. We need the network to find the latest version of a bin and to also broadcast any operations we perform like adding/removing files to a bin. A local node could be very useful to help ensure content is available when requested from elsewhere through PeerBox, and a sync feature is super interesting there. PeerBox is a simple way to interact with IPFS without needing to install anything, host a node (at least for downloading), or even know you're using a p2p swarm. It allows you to group items that aren't necessarily connected via the protocol by curating bins and then accessing them from anywhere with a memorable URL. For example, when people in an organization add documents to IPFS from different nodes they can use this to organize and make them available to each other. It also makes it easier for an individual to interact with IPFS when at random computers like a library or a friend's because you can just remember your files are under "#lidels-bin" and download any files you need on whatever computer you're at, with an in-browser node. I think it works as a standalone app and has a lot of pieces that are also useable elsewhere. |
PeerBox
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 oftreedoc
or one of theset
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 up
ipfs-shipyard
anddynamic-data
work so would love your thoughts.What do you think? Worth pursuing?
A screenshot of an example UI (Dropbox's):
The text was updated successfully, but these errors were encountered: