Is it possible to build a desktop file sync client in Electron?

Is it possible to build a desktop file sync client? For instance, to have a desktop folder like Dropbox and have files sync to a remote server and vice versa. Less of a GUI, more of a Desktop mounting type thing. Again, think the Dropbox or Google Drive desktop apps.

It’s totally possible. Electron has full access to Node APIs including the fs module. You can transfer files over the Internet using any protocol or Node package you want.

Thanks for the quick reply! I think I’m having a hard time wrapping my head around how Electron would create the actual mounted instance. For instance, on Mac, Dropbox is its own mounted folder with its own icon I believe. Something like that is doable using just fs?

Dropbox isn’t a mounted folder, though. If you disconnect from the Internet, the Dropbox folder is still there, because it’s actually a real folder on your hard drive. Mounted folders and drives disappear when the connection to the hardware they live on is severed. What you’re thinking about is an automated sync routine between dedicated folders, as opposed to (for example) an FTP or P2P client where you can click on specific files and download them to just any folder.

Totally! I guess the question is, does Electron gives access to system functions deep enough to allow creating a dedicated folder similar to the Dropbox one, where it lives in Finder’s sidebar, has its own icon, etc.

I haven’t used Mac in many years, so I don’t know what access is required for that goal.

I’ll do some research. It’s about out of my core competency so I wasn’t quite sure what to look for, but I think I’ve found a trail to pursue. Thank you!

No problem. If you eventually start looking to make it work cross-platform, I might be more help in tracking down integration details when it comes to Windows (and I can potentially test it).

That would be very much appreciated. Thanks so much for the help and the offer!

Looking into doing something similar @trevorhinesley - what did you end up going with?