Skip to main content
Platform

One model. Every layer of the application.

CEDM Platform is a modelling language, a library of business entities and a generator. Together they turn what you know about your business into software your teams can run, audit and extend.

The model

A model people can read, and machines can check

The model is a YAML document: entities, value lists, lifecycles, rules, roles and reports. It is validated against a schema and a checker before anything is generated, and every finding points to its line and column.

  • Import entities from the CEDM library by name, or declare your own
  • Help text on every entity and field becomes the application's built-in help
  • One checker for the command line, the modelling tool and the browser
cedm: "1.0"
application:
  name: Sales and Order Management
  domain: sales
imports:
  - module: common          # parties, places, currencies…
  - entity: Customer
  - entity: Quotation
  - entity: SalesOrder
  - entity: SalesOrderLine
ui:
  categories:
    - name: Sales
      icon: badge-dollar-sign
      entities: [Customer, Quotation, SalesOrder]
The library

351 business entities you do not have to design

The CEDM library describes business entities in an implementation-neutral way: their fields, relationships, lifecycles, invariants and help. Applications import what they need, and everything an entity depends on comes with it.

  • 541 governed value lists, each value with its own meaning
  • Reference data from ISO 3166, 4217 and 639 and from GeoNames
  • 55 domains catalogued, from finance to field service
The dashboard of a generated application, grouped by the model's categories
What you get

A complete application, as source code

Generation writes an ordinary project: a Cargo crate for the backend and Bun packages for the front end and tests. Your developers work in it with the tools they already know.

LayerGenerated asWhat it gives you
DatabasePostgreSQLSelf-hosted, managed, or Neon serverless. Migrations and seed data are generated.
BackendRust on Loco.rsAxum and SeaORM. One generic, dictionary-driven API serves every entity the model declares.
Web front endTanStack Start and React 19Astryx components, seven themes switchable at run time, light and dark.
APIREST with OpenAPISelf-describing at /openapi.json, browsable in Redoc and Scalar.
LogicRules, lifecycles, automationsGoRules decision tables, state machines with action buttons, and BPMN workflows.
DeliveryDocker and CICompose file, Dockerfiles and CI workflows generated alongside the code.
QualityGenerated test suitesRust request suites, API suites, Playwright specs and a browser smoke test of every screen.
AssistanceA chat for your usersFind records, run reports and open the application's own screens from a conversation.
Built to be trusted

Two generators that must agree, byte for byte

The generator exists twice, in TypeScript and in Rust, and the Rust one also runs as WebAssembly in a browser. On every change, all three generate the same backends from a corpus of models and must match exactly. A difference fails the build before it reaches anyone.

  • Regeneration never deletes your code: hook handlers are written once and kept
  • Lockfiles are generated, so a build that worked last week still works today
  • Every generated backend is expected to compile cleanly with warnings treated as errors
Your code, your servers

No proprietary runtime in the way

A generated application is a standard Rust and TypeScript project on PostgreSQL. It runs on your infrastructure, behind your network policies, with your data in your database. The model ships inside the project, so the application always carries a readable statement of what it is.

  • Runs anywhere Docker runs, or on a managed PostgreSQL such as Neon
  • AI features use a model endpoint you choose, including local models
  • Extend behaviour in Rust hook handlers around every create, update and delete
The modelling tool

From a conversation to a reviewed model

Business analysts and developers work in one web tool, where the model is the shared artefact rather than a document that drifts from the code.

Start from a description

Describe the application in plain language. AI agents propose the entities and relationships, and a person approves the design before anything is generated.

See the model as a diagram

The modelling tool draws the YAML model as a laid-out diagram, so business and engineering review the same picture.

Design logic visually

One rules-and-workflows editor for decision tables, status machines, processes and automations, with a dry run against a sample record.

Every save is a version

Each project keeps its own Git history: drafts, named versions, restores and generations are all commits you can compare and roll back.

Modernise

Bring the systems you already have

Most organisations are not starting from nothing. CEDM Platform reads existing systems into models, so modernisation starts from what is really there.

Compiere ERP, translated

All 411 business tables of Compiere ERP are translated into a CEDM model, split by functional area, and can be generated as a modern application.

Existing applications

A translator reads existing Java and Swing applications with ANTLR grammars and writes the same domain as a CEDM model.

Earlier model formats

Models written in the platform's earlier diagram notation translate construct for construct, with a report of anything that needs a decision.

How translation works

See it build your application

Bring a process you run today. We will model it with you and generate the application in the same session.