LiveBox Cloud is a private cloud system with the purpose of synchronizing user's data between the server and any other user's clients, and the possibility to share them with other users or groups.
Here is what I developed:
- The standalone clients for the Windows and Mac Os platforms, with the Qt framework (with C/C++). The main purpose of these clients was to preserve the synchronization of the user’s data between the server and any computer guesting the clients themselves. I used several design patterns to plan the software functionalities: singleton, observer (implemented with the signals and slots in Qt), composite, which coupled to several graph traversal algorithms, helped me to handle the folders/files structure of the users.
The application orchestrates:
i. the file systems (to handle folder and files’ modifications and synchronization);
ii. the SQlite database (representing the state of the last synchronization);
iii. the communication with the Web services in both polling and pushing modes (in polling mode the requests are performed any x seconds from the client to the Web services, in push mode it’s the server that communicates with the client through the XMPP messaging protocol).
- The LiveBox Agent Installer for Windows OS platforms was built in C# with Visual Studio Installer, with the help of the so-called ‘custom actions’ to register the folder/file overlays and show them through the explorer file manager.
- The backend core functionalities (PHP, and Doctrine only in the first version of the software) and the database (MySQL) for the cloud system. The server side development was oriented to the deployment of the Web services (Rest/JSON) to let the clients interact with the backend. The core logic functionalities interact with the MySQL database tables. I built the system in order to communicate with LDAP and Active Directory, to guarantee the accessibility of already existing users to the cloud system, and with external SOAP Web Services to enrich the functionalities exposed.
Here is a link to my blog posts written at LiveBox: Danilo Carrabino - blog posts