1. An .exe or .dmg is downloaded from the website. When the installer is clicked it'll
show a default location as 'Create bucket at...' which the user can browse and change (just like normal applications ask for installation location). And create the corresponding folder with the name 'Bucket'. The name 'bucket' will be changed later.
2. A taskbar icon appears which will have a menu with items to be decided later, it will also show notifications to the user for various activities described below.
3. Upon double clicking the bucket, it asks for login and on successful login, it opens the folder and the box and cloud are synced.
3a. On login server will return the user id and a list of all files on cloud.
3b. The bucket-app should check the files present on cloud but not in bucket and download them, and those present in bucket but not in cloud and upload them. Both actions are done after prompting the user whether to start the sync.
4. The user can add/delete/rename a file in the bucket
4a. Any time a file is dropped / copy-pasted into the folder, it is added to an upload list which keeps an index of the files to be uploaded. The process running in background keep listening to any addition to this list and keeps upload process on if this list is not empty.
4b. If files are deleted a delete request is sent to the server. If not successful, the job is queued and retried again later.
4c. If a file is renamed, a rename request is sent to the server. If not successful, the job is queued an retried later.
4d. If a file is edited, an update request is sent to the server. If not successful, the job is queued an retried later.
5. Before uploading the file to the server, there will be a set of tests that the desktop app will do.
a. Check the format of the file (ex - pdf, doc, docx, png, jpeg are acceptable) If the format is not accepted it has to be prompted to the user and file is rejected
b. If a file with an existing name is dropped, prompt the user and ask to
i) Rename ii) Replace iii) Cancel
6. Every time a file upload process starts, the server will either return back with an error message in case there is a problem which should be prompted to the user with an appropriate error message. If there is no problem, the server will respond after the file upload is complete with a success message, which will be shown to the user and file will be removed from the upload list. Similarly for delete and rename.
There will be issues that can happen during the upload process that have to be handled:
a. Network lost - The file is uploaded again from start after network availability
b. Bucket-app terminated (laptop shutdown or restart / user killed the process / etc) - On restart, the background process starts processing the upload, delete and rename list.
7. The user should be able to create/rename/delete a folder inside the box.
8. The app should work on all common versions of Windows and Mac
I will be working on the server api.
Preference given to candidate who can help with both Windows and Mac version
I am open to using an open source solution that can be tweaked to suit the needs, if you have worked/ know of such solution, please feel free to recommend.