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/healthand 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 headerssrc/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.cppintegration and smoke tests, including live HTTP smoke testdeps/vendored third party materialbuild/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:
sudo apt install cmake g++ libsqlite3-dev libssl-dev
Build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
Artifacts:
build/versiond-clibuild/versiond-testsbuild/libversiond.a
Test
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
./build/versiond-cli --help
Library use:
#include "versiond/versiond.hpp"
See PLAN.md for the module mapping and REGISTRY.md for interface provenance.
Documentation
CHANGELOG.mdCONTRIBUTING.mdCODE_OF_CONDUCT.mdSECURITY.mdCITATION.cffPLAN.mdREGISTRY.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.