Experimental client/server file synchronization system written in modern C++ as part of the Application Development in C++ course at FIIT STU.
See docs/requirements.md for the full assignment description.
This is sample project layout for C++ applications using CMake. You can use it as a starting point for your own projects. It is in fact recommended to fork this repository and build upon it. But of course we only need your project to build with CMake and create client/server executables.
MiniDrive uses CMake (3.22+) and automatically downloads its third-party dependencies (Asio, nlohmann/json, spdlog, libsodium) via FetchContent.
cmake -S . -B build
cmake --build build
On Windows you may need to generate build files for Ninja or Visual Studio (or better use Docker for development). Linux and macOS users should ensure a working toolchain with a C++20-capable compiler.
./build/server --port 9000 --root ./data/server_root
./build/client 127.0.0.1:9000
(Commands above are just an example.)
cmake --build build --target integration_smoke
ctest --test-dir build
client/,server/,shared/– application targetscmake/Dependencies.cmake– dependency managementdocs/– architecture and protocol documentationdata/– sample server runtime roottests/– integration smoke tests
See docs/architecture.md for more information.