Happy new year everyone!
We deployed an initial version of a new app called XOR Drive for storing and managing all your files on Blockstack. All your files are stored encrypted, and decentralized as you can choose where you keep your data (thanks to Blockstack).
Here are the features we have implemented so far:
Upload files and folders
Drag and drop upload (only on desktop)
Create folders
Move folders/files to another folder
Publicly share a file
Download files/folders
Rename files/ folders
Mark as favorites
Trash & delete
File previews (working on supporting more file types)
Here are the features we have on our roadmap:
Share with other users
Tags
Display file and folder details
Activity for file and folder
Passphrase protection
Grid view
Drag and drop to move to other folders
Dark mode
Clone a file
Mobile apps
We’ve made sure the currently deployed version works fine in mobile browsers too.
We would love to hear your feedback, suggestions, and questions.
I don’t know why but your app seems to have memory issues / bugs out when uploading large files (such as those > 100mb). I think it is because the upload is “syncronized” instead of being on its own thread (like through a promise or an async function) – not sure though.
Also when making them public, it freezes up again – seems like the encrypt/decrypt is done synchronized as well, making it a rather awkward experience. If there could be a progress bar when decrypting (such as when setting it to public) that would help a lot.
I would like to see an option to, by default, not encrypt large files but make them optionally encrypted after uploading, that way when I want to transfer it to public, I can do that easily.
Opening a large file that is publicly shared does not work either, see: https://xordrive.io/?p=_a93d9b4c-ff9e-24eb-9262-78e75dbd8207 (~110mb). It downloaded fine when first uploaded/encrypted, when set to public, I can’t download it via my drive-interface either (perhaps the segmented decryption broke?).
I would also like the option to share it publicly but keep it stored encrypted, i.e. it is stored encrypted but the share URL has the key in the url-params. This would be similar to a “anyone with a link can view” type of option, but keep the storage as dumb storage still.
It’s a good prototype though, thanks for making it!
Thanks for trying the app and your feedback. We are working on improving the performance of the app. As you pointed out, all the upload/encryption/download are happening synchronously now. This is the very first version of the app we released and we were more focused on implementing the basic functionality before performance tuning for large files.
Also, if you are using the default Gaia hub, there is 5MB per file limit (Blockstack recently increased it to 25MB). So the way we handle this scenario is splitting up the file into multiple chunks before the upload. But still as you mentioned, the performance can be improved by moving the upload/download/encrypt/decrypt to a separate thread. Thanks again!
I am not, that one is a private id link, but I did previously with another id (asdf.blockstack.id) but it also didn’t work - I can get you that link later though.
Regardless I am still unable to download from my private interface when it is previously shared. Also I got back on and it seemed to no longer be shared… odd.
Thanks for the details @MichaelFedora! It is required to have a Blockstack ID for the public share feature to work as it depends on Blockstack’s Gaia multiplayer feature which in turn requires a Blockstack ID. I am sorry that you are having problems downloading the files, it should have been communicated better in the app. I suspect it’s related to not having a Blockstack ID. To prevent this from happening for other users, we will do the appropriate validation and display an error message if a user with no Blockstack ID attempts to share. Thanks again for the feedback.