Pocket Drive

On Premises Personal Cloud Storage Device
Pocket Drive is an on premises personal cloud storage system which can be used by individuals with multiple devices, families, teams and small to medium scale organizations.  Personal cloud devices are more popular because of the preference of people to have a shared centralized storage location. Access from multiple devices and multiple places simultaneously, easy sharing, save local storage space for most frequently used items and keep infrequent items away are key requirements of a cloud storage device. Despite this popularity, there is no proper device to cater all the functionalities required by users.

What is Pocket Drive?

Pocket Drive can be connected to the local network through Ethernet or WiFi. Users have different methods of access which best fit with different occasions. The main and most powerful method is using the cross platform desktop application which can be run on Windows, Mac and Linux machines. With the client application, users can mount their private storage space to the laptop. Or he can set a selected set of folders to be in sync with the laptop (just like Drop Box sync folders). The most interesting part is this. If a user has multiple Pocket Drives, let's say one at the office and another at home, then he can set two devices to be in sync. This inter Pocket Drive synchronization is done in two methods. First is Non-Internet synchronization which is very useful for syncing large data changes and the second method is Peer to Peer synchronization which is useful for keeping the two devices sync in real time by applying frequent small changes in real time. 
The diagram in left side illustrates the set up of two Pocket Drives locted at home and office to be in sync. In addition to that client devices have been also indicated. 
Overview of Pocket Drive system
Non-Internet synchronization

Synchronization is done over a moving client device between two places frequently. Only the changes need to sync are copied to the client laptop while he is at one place (let's say office). After he moves to other location (lets'  say home) the changes travelled with the laptop are applied to the Pocek Drive at home changes at home Pocket Drive are copied to the laptop again. This process continues while the client is moving place to place.  Most important thing is, after the initial setup all of the above processes are done without user's intervention. He just has to take the device from place to next place and connect the laptop to the network. 

This feature doesn't exist on any commercially available device or a system. Utilizing not used free space for of moving devices to provide nomadic access  is the key objective of this concept which is our research area as well. 

Non-Internet synchronization
Peer to Peer synchronization

Here synchronization is carried out over the internet. But the important thing is the data transfer happens in a peer to peer manner, where two devices are connected directly without an intermediate server. Because of peer to peer communication, performance doesn't get affected by a server load and the data privacy is also protected since data is not going through a server. We are using NAT traversal to eliminate the need for a public IP to form a peer to peer connection. 
Peer to Peer synchronization
Technologies involved

  • Server side implementation - Javascript, Typescript, NodeJS, Bash
  • Client application - AngularJS, Electron framework
  • Web application - AngularJS
  • NAT Traversal - WebRTC
  • Synchronization - Chunk based synchronization with conflict detection.
  • Others - SSDP,  Samba server

This is my final year project of BSc. Engineering degree in Computer Science and Engineering Department of University of Moratuwa. The team includes four members including  Anuradha Wickrmarachchi , Ravidu Lashan , Pamoda Wimalasiri  and me.

Project Repository :-  https://github.com/pocketdrive/