Nowadays, the vast majority of Internet users are signed up in a cloud storage provider of some sort. Quite often, this service is already integrated by default on their devices, and is usually designed to synchronize certain file types automatically, which can lead the user to a huge problem: storage limit. Then, those companies offer the possibility to go for a paid plan, but why not use all that free possibilities that they offer?

What it does

Google Photos offers unlimited storage of photos for free, if you agree that your photos get some compression (what they call High Quality). The problem is, though, that if you want to upload a file different that a picture, it counts against your Google Drive quota (15GB for free by default). InfinityCloud takes advantage of that and converts any file in your computer, then uploads it into Photos and it's able to recover them back into any computer you have it installed. Of course, there's no limit on how many files you can upload.

How we built it

The basic idea of representing a file through an image, it's taking its binary representation and drawing it on a jpeg image: a black pixel for 0s and white pixel for 1s. Then, we have to split the image in different images so we can stay inside the limits imposed by Google's compression algorithms, that may alter the image. Finally, we are able to reconstruct the file from the images we have stored in the cloud.

The whole application is implemented using Javascript & Node.JS. The desktop client has been developed using Electron and we've used the Express web server for handling the authentication with Google.

Challenges we ran into

In the beginning, we’ve been trying to implement tools that were not suited to a project like this, as the APIs that Google is offering are made for a more ordinary use of this platform.

Also, we must keep in mind that we’re trying to decode images bit by bit, and we were afraid that Google decided to compress the images once we were uploaded, so the files became unreadable.

Accomplishments that we're proud of

For us, the biggest accomplishment has been being able to convert any file, regardless of its type or format, in an image or sequence of images decodable and legible, avoiding any kind of data loss.

What's next for InfinityCloud

We think that for a near future we should rethink our effort towards improving optimization during file codification, trying to generate files of the lesser size possible, and being able to rebuild a faster, more versatile InfinityCloud.

Share this project: