/surface

Put an UI on anything

Eclipse Public License 1.0EPL-1.0

Surface

We spend an insane amount of time trying to see what's inside our computing environment, and specifying the action for the computer to take.

Surface lets you put a UI on anything in your Clojure runtime. You can quickly compose a UI to interact with your existing data and systems, and push it to a web client. A simple syncronization model based on Om Next maps UI actions back to user code, and state updates back to the client.

Surface is ideally suited for creating quick-and-dirty interfaces to support interactive development and computation. It trades off several factors that are desirable for consumer-facing webapps, such as latency and server resources, in favor of maximal power and flexibility for the developer.

Existing technologies that try to provide a similar value (notebooks, dashboards) are complicated, and don't solve the core problem that Surface does: how to put a UI around any data, function, or process. This leads to technical limitations and incidental complexity as use cases extend beyond those originally designed.