Saltcorn 1.2.0 - First stable release with workflows

By Tom Nielsen
Published on 

Saltcorn 1.2.0 is the second major stable release of Saltcorn, the open source nocode database platform for building web and mobile applications. Saltcorn applications use the relational data model as a universal language to structure the user interface scaling to complex applications, and to tie the application's custom data schema to front end libraries implementing generic UI patterns.

Saltcorn is used on every continent (except Antarctica - can anyone introduce us to a tech-savvy penguin?) to build internal and customer facing applications. We have projects with IT service provides, nanotech R&D, semiconductor manufacturers, gyms, climate mitigation, local government, beach hut rentals, and one of the world's largest employers. A credit union is running on Saltcorn; how cool is that? But, since privacy is built-in and there is absolutely no telemetry or license fee, ultimately we have no idea what people are doing with Saltcorn, which is the way it should be.

Saltcorn 1.2.0 introduces:

Workflows: durable workflow execution with custom steps and control flow logic. We have had actions for a long time but now you can run more than one of them, with loops, ifs and buts, error handling and and pass information between steps by writing to and reading from a context. Saltcorn workflows can run periodically, in response to a system or table event or on a button click. A new view type (WorkflowRoom) allows you expose a workflow to the user as a chat interface, which is useful for AI-backed workflows. Alternatively, workflows that request information from or displays data to the user can use popup models for communcation.

Transactional isolation: every action, POST request and administrative action (apart from restore, which can get too big) now runs in a database transaction on PostgreSQL. This means that if an action errors halfway through running, the effects of the first steps are undone and the state of the database is unwound back to before the execution started. For instance if you are restoring a pack and there is a failure on some of the tables then you don't end up with half of the tables from the pack. And more importantly, this applies to user actions as well, so if an action transfers funds from one account to another, this will be applied entirely or not at all without landing the database in an inconsistent state. Workflows run each step in an atomic transaction. 

Capacitor.js-based mobile builder: mobile applications are now based in capacitor.js, which is a more recent and better maintained framework. Potentially this allows us also to build different types of applications such as fully offline PWA and desktop. 

Animations: we added a simple facility to add animations with delay and triggered by scroll of different selectable keyframes to pages.

Tightening security model: 1.2.0 more consistently implements the security model. For instance previously when views were embedded in views only the outer permissions were checked, and table read permissions were not checked when populating the options in a drop-down select. Now both of these are checked consistently and the user must have read or write permissions to the table and permission to run the view.

Developer accounts: you can now give permission for roles below admin to edit various entities such as tables, pages, views and some settings.
Stored calculated fields update automatically: almost all stored calculated fields, including those based on joint fields and aggregations, are now updated when the data they reference are updated.

Primary key flexibility: better support for tables containing primary keys not called ID and with non-integer/uuid fields. This Fields typically arise from tables that have been created by importing an existing database or uploading a CSV spreadsheet.

Icons: modules can now supply icons that can be used on buttons, links, text and in the menu. A module for bootstrap-icons is already in the module store.

Modules: some notable developments in extension modules during this development cycle:

  • Copilot: a much improved Copilot module which exposes a more chat-like interface for user and system copilots. The user copilot allows you to build a chatbot for users to interact with designated database tables and run designated actions by chatting to a large language model. The system Copilot is used to build saltcoin applications and can design databases, build workflows and other actions and build pages and currently only a limited number of views.
  • React: you can now build Saltcorn views with react. Each view is optionally linked to a table and consists of a single component that can use shared code from a repository which can in turn import packages from npm, thus exposing a huge number of components. If you have both the copilot and the react modules, the copilot can write React code!
  • CalDav: synchronise external calendars with database tables. Combined with our imap sync module this makes it possible to build personal information applications. 

The next development cycle for 1.4 will add a few more essential features to build a complete platform. A key thing we're missing is real-time collaboration. Overall we will work to make everything consistent and complete within the current paradigm without adding many major entity types. For instance only some components are live updated in the Edit views, but they all should be. There is a label on github issues for major new features.

The office hours scheduled for 5pm BST Friday 23 May on YouTube Live will be a bit of a release party! Sadly no fibre internet at Saltcorn HQ yet and thus not enough bandwidth to run interviews at live streaming, but that is coming.


Next post  
Recent posts