Open source release: versioningcpp academic achievement
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user