MyCrud

MyCRUD is an opensource web/app-friendly key-value database, with:

  • Simple and easy to use HTTP-API:
    • PUT /$db/$key   creates/updates value. (Optionally pass previous version as parameter for create/update with conflict detection.)
    • GET /$db/$key   reads value. (Returns version in ETag)
    • DELETE /$db/$key   deletes value.
    • GET /$db?$query   finds keys in given range (query example: ?gte=bar&lt=foo), or by modification time (query example: ?since=2020-07-30T17:30:00). Also supports waiting for query result to be non-empty, which can be used for realtime synchronization, signalling, etc.
  • Built-in access control and CORS, such that it can be used directly from web/apps. (Token is passed to the API with Authorization: Bearer...-header)
    • External authentication servers can manage permissions and tokens. (This is done by updating the JSON-objects in the special _db and _token databases. OAuth2-pkce external authentication server is on the roadmap)
  • Timestamped values, which allows compare-and-set atomicity, incremental backup, synchronised offline apps, etc.
  • Node.js server, with different storage backends: MySQL, SQLite3 and LevelDB. (PHP implementation with MySQL as backend is on the roadmap)
  • API design is based on Level. (A level compatible adaptor is on the roadmap)

Source code, and more details can be found on https://gitlab.com/solsort/mycrud.