Seamless Sync is a lightweight and efficient file transfer and chat tool designed to seamlessly exchange files and messages between two computers over a Local Area Network (LAN). The application ensures that files can be sent and received securely across multiple devices without requiring an internet connection or relying on cloud services. Seamless Sync is ideal for users who prioritize privacy and security within their local network.
In today's connected world, data synchronization often relies on cloud services, which may raise concerns around privacy or be unavailable due to lack of internet access. Seamless Sync provides a secure and direct local network solution, giving users control over their data while offering convenience, reliability and simplicity.
-
Privacy and Security: All file transfers and messages are sent directly over the local network, ensuring data is kept private without third-party involvement.
-
Socket Programming: Uses socket programming for reliable communication between devices, enabling fast and secure file transfers.
-
Encrypted Transfers: Files are securely transferred using AES encryption, protecting data from unauthorized access during the transfer.
-
Chat Integration: Allows for real-time messaging between connected devices along with file transfer.
-
User-Friendly Interface: Provides a simple and intuitive interface built using GTK, making file transfers as easy as a few clicks.
To compile and run Seamless Sync, the following dependencies are required:
-
Used to create the graphical user interface(GUI). Ensure you have GTK4 installed on your system.
-
Install on Ubuntu/Debian-based systems:
sudo apt-get install libgtk-4-dev- Install on Arch:
sudo pacman -Syu gtk4-
Glib is required for various utilities like data structures, event loops, and GApplication.
-
Ensure GLib version 2.74 or higher is installed. For older versions, modify the code as mentioned below.
-
GLib is automatically installed when you install GTK4.
-
Used for project configuration and building.
-
Install on Ubuntu/Debian-based systems:
sudo apt-get install cmake- Install on Arch:
sudo pacman -Syu cmake- A C compiler to compile the project.
-
Required for socket-based communication between the server and client.
-
Should be part of your system's default C libraries.
git clone https://github.com/srijan023/seamless_sync.git
cd seamless_syncIn the project directory, create a build directory:
mkdir build
cd buildGenerate the makefiles using CMake:
cmake -S ..Once CMake has generated the makefiles, compile the project:
makeAfter successful compilation, run the executable:
bin/ssyncImportant
GLib Version Compatibility: If you encounter issues related to G_APPLICATION_DEFAULT_FLAGS during compilation, it could be due to using an older version of GLib (earlier than 2.74). In that case, replace G_APPLICATION_DEFAULT_FLAGS with G_APPLICATION_FLAGS_NONE in src/main.c to resolve the issue.
-
File Change Detection: Implementing file synchronization with change detection using a double hashing technique, allowing for efficient updates of modified files.
-
Multi-device Synchronization: Future updates will allow file synchronization across multiple devices simultaneously.
Note
The project is still under active development and not yet open for external contributions. Stay tuned for future updates.
Once Seamless Sync is stable, contributions will be welcome! Whether you want to report bugs, suggest new features, or contribute code, your input will be appreciated.
-
Fork the repository.
-
Create a new branch for your feature or bug fix.
-
Submit a pull request once you have tested your changes.
Seamless Sync is licensed under the MIT License. See the LICENSE file for more details.
Warning
This project is under active development. Some features may not function as expected, and the project may contain bugs or unfinished code. Seamless Sync is currently compatible only with Linux and macOS. Windows support may be added in the future.