Show HN: CRUD Spreadsheets

A free graph data editor and CRUD app builder
Dear HN, We're excited to share with you our vision for what the future of CRUD app development could be like. We are especially interested in feedback if you understand what we are working towards and if the vision is plausible. Thank you for your feedback!
Dustin Getz
Oct 7, 2019

Databases are not spreadsheets.

They are different in two major ways:
  1. queries
  2. transactions
All the important business rules of a CRUD app are defined in its queries and transactions. For example, setting :status to :declined must prompt for :comment and :reason-code (from a picklist), touch :modified-date, then validate the new database state. All done atomically, while handling concurrent edits and failure. Spreadsheets aren't designed for that.
But at the essence, CRUD apps—like spreadsheets—boil down to data, and operations on data. Most knowledge workers are comfortable operating at the level of data.
This is a simple CRUD UI built in Hyperfiddle, demonstrating a transactional CREATE. CREATE operations are composed of a parent query and a child form. The popover indicates two things: 1) where in the graph the parent/child reference is, and 2) that the insertion is transactional and can be discared as a unit.

Database-driven UI development

Hyperfiddle is a WYSIWYG tool that lets you make lightweight database applications out of just queries and transactions. It is:
Intended use cases are mission-critical business web applications (e.g. as typically hand-coded in Java or Rails with SQL). Eventually, of course. We have a ways to go.
Project status: under active development. Hyperfiddle is currently not suitable for anything, unless you are an experienced Clojure programmer who is already using Datomic and is willing to work with us through our early days.

Most apps are 80% forms & tables, so Hyperfiddle is 80% of what you need to make an app.

For the remaining 20%, we have a developer-first approach. For example this cryptocurrency invoicing MVP has a few React.js view enhancements including use of a QR code module from github, as well as some hand-coded database transactions.

Picklists

Picklists are modeled as two queries linked together, and then presented with React.js.

Declarative data programming with Datomic

The first step of a CRUD metamodel is getting the database layer right.
Hyperfiddle's metamodel is based on Datomic, a simple graph database backed by an immutable log. Datomic's goals include "Provide for a sound information model" as well as "Enable declarative data programming in applications." These are precisely the properties that a CRUD metamodel requires. These are not objectives of GraphQL and as such GraphQL does not accomplish them and was never intended to.
Datomic provides out of the box:
And a lot more. Datomic was specifically designed for this purpose and has exactly what you need – no more, no less.

Metamodel technical details

If you are a database engineer, you might be interested in where our head's currently at for the next iteration of the underlying CRUD metamodel. The definition includes:
From such a metamodel you could generate not just CRUD UI, but also data-sync, APIs, adapters for foreign systems, intelligent systems, ...

Business model

Hyperfiddle is open source. It is not our intent to sell proprietary software. We are going to sell premium API integrations, so low-code users can stay low-code for longer. From a web developer's perspective, Hyperfiddle is or will be an open data protocol with open source client/server reference implementation.

HN, what do you think?