This is the main repository for Demerio app. To know what Demerio is about, visit landing page.
This was a startup project that I had been doing with Luc Millet and Frederic Martin for two years.
This code is our last MVP, around two months development project. We wanted to go fast, so it is not a concentration of best practices. However, there are tests, some docs, and a basic architecture that splits logic.
You can find here, the alpha version that we achieved to build.
For more informations on what's remaining to be done, look at TODO.md file.
Basically, the app listen to a local directory for changes on its files, when a change is detected, it will split the files into three pieces such that any 2 of which can reconstruct the original file.
Then pieces are sent to different clouds providers, currently three are supported : Dropbox, Box and Google Drive.
The app depends on Qt5 please see install pyQt file to know how to install pyQt5 as it is not avaiable in Pypi
.
I have used python 2.7 since all libraries are not yet python 3 ready.
To install other dependencies use :
pip install -r requirements.txt [--upgrade|-U]
It depends on several others modules, you need to add the path to the project into your PYTHONPATH variable.
To launch the app use :
python main.py
To do so you need to have the secret file that contains the secret keys to the app.
export DROPBOX_SECRET=""
export GOOGLE_DRIVE_SECRET=""
export BOX_SECRET=""
## For tests only
export DRIVE_PASSWD=""
export DROPBOX_PASSWD=""
export BOX_PASSWD=""
The main logic of datalords is in the DemerioHandler class. It acts as a conductor for all others modules.
This module contains the daemon for demerio.
Is is responsible for detecting changes on files.
This module mainly used watchdog library.
This module contains the map to track informations between local storage and clouds.
The map was a simple python ConfigFile.
This module contains the split and rebuild functions base on zfec library.
This module contains the sync part ( transfer to the clouds ) of demerio app. It is basically a wrapper of clouds APIs.
I put here everything that is in common between all demerio modules.