Verified Commit fbe9c00a authored by Aral Balkan's avatar Aral Balkan
Browse files

Initial add

Pipeline #961 canceled with stages
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](, and this project adheres to [Semantic Versioning](
## [1.0.0] - in progress
Initial releases.
This diff is collapsed.
# WhatDB?
A transparent, in-memory, write-on-update JavaScript database for Small Web applications that persists to JSON files.
For initial brainstorming, see [this gist](
## Use case
A data layer for simple [Small Web]( sites for basic public (e.g., anonymous comments on articles) or configuration data. Built for use in [Site.js](
## Features
- __Transparent:__ if you know how to work with arrays and objects and call methods in JavaScript, you already know how to use WhatDB? It’s not called “What database?” for nothing. Database? What database?
- __Automatic:__ it just works. No configuration.
## Limitations
- __Small Data:__ this is for small data, not Big Data™.
- __For Node.js:__ will not work in the browser.
- __Runs on untrusted nodes:__ this is for data kept on untrusted (server) nodes. Use it judiciously if you must for public data, configuration data, etc. If you want to store personal data or model human communication, consider end-to-end encrypted and peer-to-peer replicating data structures instead to protect privacy and freedom of speech. Keep an eye on the work taking place around the [Hypercore Protocol](
- __In-memory:__ all data is kept in memory and, [without tweaks, cannot exceed 1.4GB in size]( If your local database is > 1 GB in size, you’re not really building a Small Web site/app and this is not the tool for you. Quite literally every other database out there is for your use case so please don’t open an issue here for this reason.
- __Write-on-update__: every update will trigger a write (unless a write is already in process, in which case updates that take place during a write will be batch written together). So this is not what you should be using for, say, logging. Use an append-only log for that instead.
- __No schema, no migrations__: again, this is meant to be a very simple persistence, query, and observation layer for local data. If you want schemas and migrations, take a look at nearly every other database out there. You might also want to see how well [ObjectModel]( works alongside WhatDB.
## Related projects, inspiration, etc.
- [proxy-fun](
- [filejson](
- [Declaraoids](
- [ScunMEngine](
"name": "@small-tech/whatdb",
"version": "1.0.0",
"description": "A transparent, in-memory, write-on-update JavaScript database for Small Web applications that persists to JSON files.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"repository": {
"type": "git",
"url": ""
"keywords": [
"author": "Aral Balkan",
"license": "AGPL-3.0-or-later"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment