h2kv

Crates.ioh2kv
lib.rsh2kv
version0.1.2
created_at2025-09-16 15:56:58.711839+00
updated_at2025-09-17 14:40:45.847803+00
descriptionHTTP/2 interface for key-value storage systems
homepage
repositoryhttps://github.com/guapodero/h2kv
max_upload_size
id1841972
size59,322
Daniel James Baumann (guapodero)

documentation

README

h2kv

A simple object storage system. Provides an unopinionated HTTP/2 interface for LevelDB based on features described in public RFCs.

Crates.io CI

Goals

  • Facilitate web application portability. The only semantics involved are that of hash tables, HTTP, and JSON.

Non-goals

  • This is not designed to scale. Some of the technical limitations of LevelDB are discussed in this video.

Features

  • The URL path is the storage key. Stored objects are managed using HTTP verbs (HEAD, GET, PUT, DELETE).
  • Bulk synchronization of objects with local filesystem tree (optional).
  • Content negotiation of file formats by file extension and HTTP headers (RFC 9110).
  • Exhaustive integration tests.

Warnings

  • LevelDB is known to suffer from data corruption during system crashes. Use a durable file system such as ZFS to mitigate this problem.
  • TLS is mandatory for creating HTTP/2 connections from a web browser. Use a TLS proxy such as Hitch for this use case.

Status

This project is a work in progress, with additional releases planned in the near future.

Acknowledgements

This project is possible thanks to the authors of the leveldb-rs-binding crate.

Installation

Cargo

  • Install the rust toolchain in order to have cargo installed by following this guide.
  • run cargo install h2kv

Usage

CLI.txt

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Commit count: 12

cargo fmt