A cross-platform desktop application built with ElectronJS for synchronizing files to Cloud storage services.
Note: Because the server is deployed on Render, the first login may take a few seconds while the server starts up. Please wait for the loading indicator before proceeding.
🔗 Demo Link: file_synchronizer_demo.mp4
- Cross-platform support (Windows, macOS, Linux)
 - Seamless file synchronization with Cloud storage services like Google Drive, Box,...
 - Real-time updates and conflict resolution
 - User-friendly interface built with React and styled using TailwindCSS
 - All synchronized files and folders are stored inside a folder named 
__ticklabfs_backupin your Cloud storage — please do not rename, move, or delete this folder, as doing so will break future backups. 
- Node.js
 - npm
 - A Google Cloud Platform account
 - A Box Platform account
 
- 
Clone the repository:
git clone https://github.com/BaoDuong254/file-synchronizer.git cd file-synchronizer - 
Install Electron-vite dependencies:
npm install
 - 
Install backend dependencies:
cd src/server npm install - 
Install frontend dependencies:
cd src/renderer npm install 
Note: You can also download a release package for your operating system from the repository’s Releases page.
- 
Copy the example environment file:
cp .env.example .env
 - 
Edit
.envand set the following variables:GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETBOX_CLIENT_IDBOX_CLIENT_SECRETBACKEND_URL
 - 
Setup credentials in Google Cloud Platform:
- Create or select a project
 - Enable the Google Drive API and OAuth2
 - Create OAuth2 credentials for a Web Application
 - Copy the Client ID and Client Secret into your 
.env 
 
Note: The setup steps are similar for other cloud providers—simply create the corresponding credentials and update the variables above.
- 
Start the backend server:
npm run server
 - 
Start the Electron app (in a separate terminal):
npm run dev
 - 
Login and sync:
- The Electron window will open
 - Sign in with your Cloud account
 - Choose files or folders to synchronize
 
 
We welcome contributions! To contribute:
- 
Fork the repository
 - 
Create a branch for your feature or fix:
git checkout -b feature/your-feature-name
 - 
Make your changes and commit:
git commit -m "Add feature X" - 
Push to your branch:
git push origin feature/your-feature-name
 - 
Open a Pull Request on GitHub and describe your changes.
 
If you encounter any bugs or errors, please open an issue on GitHub and include:
- Steps to reproduce the problem
 - Expected vs. actual behavior
 - Relevant logs or error messages
 
Note: This application is currently in development. If you find any issues or have suggestions for improvements, please report them or contribute via pull requests. We appreciate your feedback!