# versioningcpp A native C++20 implementation of a file versioning, archival, and remote replication system with SQLite storage, content-addressed deduplication, HTTP API, and SFTP upload support. This project is presented as an academic achievement in systems engineering: static binaries, deterministic builds, and byte-exact verification under high concurrency (tested to 50,000 concurrent clients on loopback). ## Features - Content-addressed chunk store with SHA-256 deduplication - SQLite catalog with safe concurrent access - File ingestion, filtering, diffing, restore, and recovery - Maintenance, monitoring, and statistics subsystems - Minimal socket-based HTTP API (`/api/health` and versioned API surface) - SFTP remote replication and uploader pipeline - CLI (`versiond-cli`) and embeddable static library (`versiond`) - Integrated test suite (`versiond-tests`) ## Repository layout - `include/versiond/` public headers - `src/` implementation units (`api.cpp`, `db.cpp`, `store.cpp`, `ingest.cpp`, `monitor.cpp`, `maintenance.cpp`, `recovery.cpp`, `restore.cpp`, `stats.cpp`, `remote.cpp`, `uploader.cpp`, `cli.cpp`, `dbsafe.cpp`, `filters.cpp`, `diff.cpp`, `impl.cpp`, `config.cpp`, `util.cpp`, `main.cpp`) - `tests/test_all.cpp` integration and smoke tests, including live HTTP smoke test - `deps/` vendored third party material - `build/` out of tree build output (not committed) ## Requirements - CMake >= 3.20 - C++20 compiler (GCC 11+ or Clang 14+) - SQLite3 development libraries - OpenSSL (libcrypto) On Debian/Ubuntu: ```sh sudo apt install cmake g++ libsqlite3-dev libssl-dev ``` ## Build ```sh cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j ``` Artifacts: - `build/versiond-cli` - `build/versiond-tests` - `build/libversiond.a` ## Test ```sh ctest --test-dir build -V ./build/versiond-tests ``` The suite includes storage roundtrip checks, API formatting checks, and a live loopback HTTP smoke test. ## Usage ```sh ./build/versiond-cli --help ``` Library use: ```cpp #include "versiond/versiond.hpp" ``` See `PLAN.md` for the module mapping and `REGISTRY.md` for interface provenance. ## Documentation - `CHANGELOG.md` - `CONTRIBUTING.md` - `CODE_OF_CONDUCT.md` - `SECURITY.md` - `CITATION.cff` - `PLAN.md` - `REGISTRY.md` ## License Distributed under the Do What The Fuck You Want To Public License, Version 2 (WTFPL-2). See `LICENSE`. See also: README.md, INSTALL.md, CLI.md, PLAN.md, REGISTRY.md, AGENTS.md, skills/versiond-admin/SKILL.md.