Goku-kun / sendify

An application for sharing using drag and drop upload and sharing the download link among the group.
GNU General Public License v3.0
1 stars 0 forks source link

Suggestion: Make the platform decentralized. #1

Open VrajGohil opened 3 years ago

VrajGohil commented 3 years ago

I would suggest to make this decentralized using IPFS. They also have JS implementation.

Goku-kun commented 3 years ago

This is awesome. I'll look more into it. Brave browser has implemented IPFS recently if I recall correctly. Thanks for the suggestion. I'm keeping this issue open and I'll update it when I start working on it. @VrajGohil

VrajGohil commented 3 years ago

Correct! Also I'm not that familiar with react but I can provide some resources, you can check this example it might help. Also, as IPFS is P2P, both sender and receiver must stay online in this whole process, but we can use pining service like pinata to overcome this.

Goku-kun commented 3 years ago

This is great idea. However, I looked up the pinning services(Pinata specifically) and it seems that they're open to everyone in the network that the IPFS node is available in. I don't think people would want that because that even exposes everything they want to share to the entire network. So, I don't want to expose the users like that. Furthermore, pinning services actually cost you for the amount of data stored in the node and the cost model is not based on the data requested. This is another thing to keep in mind. However, the P2P IPFS seems valid since it's a direct transfer of file. I'll try implementing that first, to enable more streamlined sharing of files.

VrajGohil commented 3 years ago

IPFS is an open protocol, as soon as something is uploaded, it is available to everyone on the network. There are public gateways like cloudflare-ipfs.com, ipfs.io which caches the files temporarily (for 7 days or something, depending upon its request), so even if sender is not online files are available on network for some time. I completely agree with you that sensitive information should not be stored on public network, what we can do is give users an option if they want to share publicly, then use IPFS else use firebase which you already have implemented. Btw I'm also trying to integrate this, l'll update here if I'm able to.