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!
Oct 7, 2019
Oct 7, 2019
Databases are not spreadsheets.
They are different in two major ways:
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.
Database-driven UI development
Hyperfiddle is a WYSIWYG tool that lets you make lightweight database applications out of just queries and transactions. It is:
- Open source, runs self-host (.jar file) or managed
- Backed by Datomic, an immutable graph database
- Extensible with Clojure, ClojureScript and web technologies
- Networked – connect to APIs first-class through the data graph
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.
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:
- Declarative query language expressed as data
- Declarative transaction language expressed as data
- Declarative schema language expressed as data
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:
- CRUD spec
- Master/detail view
- Relational queries
From such a metamodel you could generate not just CRUD UI, but also data-sync, APIs, adapters for foreign systems, intelligent systems, ...
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.