Skip to content

petrenko4/minidrive

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniDrive

Experimental client/server file synchronization system written in modern C++ as part of the Application Development in C++ course at FIIT STU.

Assignment

See docs/requirements.md for the full assignment description.

Build

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.

Run

./build/server --port 9000 --root ./data/server_root
./build/client 127.0.0.1:9000

(Commands above are just an example.)

Testing

cmake --build build --target integration_smoke
ctest --test-dir build

Repository Layout

  • client/, server/, shared/ – application targets
  • cmake/Dependencies.cmake – dependency management
  • docs/ – architecture and protocol documentation
  • data/ – sample server runtime root
  • tests/ – integration smoke tests

See docs/architecture.md for more information.

About

Semester project for APC 2025

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.2%
  • CMake 4.1%
  • Shell 1.9%
  • Dockerfile 0.8%