--- /dev/null
+# Build Cache wrapper for JSON files
+
+An NDCODE project.
+
+## Overview
+
+The `json_cache` package exports a single constructor
+ `JSONCache(diag)`
+which must be called with the `new` operator. The resulting cache object stores
+the JavaScript instantiation of JSON files loaded and parsed from disk.
+
+See the `build_cache` package for more information. The `JSONCache` object is
+essentially a wrapper object which routes the request between the `build_cache`
+package and the asynchronous `fs.readFile()` and `JSON.parse` APIs of Node.js,
+to ensure that the file is retrieved from either RAM or disk as required.
+
+## Calling API
+
+Suppose one has a `JSONCache` instance named `jc`. It behaves somewhat like an
+ES6 `Map` object, except that it only has the `jc.get()` function, because new
+objects are added to the cache by attempting to `get` them.
+
+The interface for the `JSONCache`-provided instance function `jc.get()` is:
+
+`await jc.get(key)` — retrieves the object stored under `key`, where
+`key` is the on-disk pathname to a JSON file. A JavaScript object is returned,
+as in
+ `JSON.parse(await util.promisify(fs.readFile)(key, {encoding: 'utf-8'}))`,
+except that the pathname and the parsed result are cached for future reuse.
+
+Before returning the cached copy, the existence and modification time of the
+JSON file on disk is checked to make sure that the cache is up-to-date.
+Otherwise, if the file doesn't exist an `ENOENT` exception is thrown, or if the
+file exists it is loaded and parsed and the cache updated for next time.
+
+## About diagnostics
+
+The `diag` argument to the constructor is a `bool`, which if `true` causes
+messages to be printed via `console.log()` for all activities except for the
+common case of retrieval when the object is already up-to-date. A `diag` value
+of `undefined` is treated as `false`, thus it can be omitted in the usual case.
+
+## To be implemented
+
+It is intended that we will shortly add a timer function (or possibly just a
+function that the user should call periodically) to flush built templates from
+the cache after a stale time. There is otherwise no way to delete an object
+from the cache, except by first deleting it on disk, then trying to `get` it.
+
+## GIT repository
+
+The development version can be cloned, downloaded, or browsed with `gitweb` at:
+https://git.ndcode.org/public/json_cache.git
+
+## License
+
+All of our NPM packages are MIT licensed, please see LICENSE in the repository.
+
+## Contributions
+
+The caching system is under active development (and is part of a larger project
+that is also under development) and thus the API is tentative. Please go ahead
+and incorporate the system into your project, or try out our example webserver
+built on the system, subject to the caution that the API could change. Please
+send us your experience and feedback, and let us know of improvements you make.
+
+Contact: Nick Downing <nick@ndcode.org>