The desire to be able to use a service like Dropbox straight from the desktop without having to organize our file systems around the Dropbox folder.
What it does
Allows the user to tag any file on his/her file system for two way synchronization on Dropbox.
How we built it
We built the client with Java, using the Dropbox API and a GUI to manage which files are to be tagged. The GUI stays running in the background while it sits in the task tray. Our website was designed to be responsive, while at the same time, clean and informative.
Challenges we ran into
The first initial challenges were understanding how to use Dropbox's API and Oracle's file libraries. The next challenge was the automatic synchronization of files between both the local machine and cloud as file listeners were required to catch file changes on both sides. There were also problems with Java's Watchkey class, as it only watched directories and not files. Dropbox also did not support uploading of entire directories (including their sub-files/content), so it was necessary to come up with an algorithm to circumvent this problem. Setting up a web server also provided its challenges as well. The server had problems with DNS, caching, and hosting. The way our server was initially setup made it difficult to immediately see results from changes in the website's source.
Accomplishments that we're proud of
- The stellar website we created.
- The ability to synchronize files between the local machine and cloud
- Scalable Multi-threading where each cloud service has it's own thread to prevent the program from locking up
- The GUI and cloud service agnosticism of the program
- The Simple usability
What we learned
- How to setup and operate a web domain
- The Dropbox API
- Java's file watcher functionality
What's next for PushBuddy
We will add support for OneDrive and Google Drive, increase user friendliness and robustness of the program, as well as implement security. In the end, we want PushBuddy to not only be a program, but an end to end product designed with usability in mind.