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 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.
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 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.

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.
| Layer | Generated as | What it gives you |
|---|---|---|
| Database | PostgreSQL | Self-hosted, managed, or Neon serverless. Migrations and seed data are generated. |
| Backend | Rust on Loco.rs | Axum and SeaORM. One generic, dictionary-driven API serves every entity the model declares. |
| Web front end | TanStack Start and React 19 | Astryx components, seven themes switchable at run time, light and dark. |
| API | REST with OpenAPI | Self-describing at /openapi.json, browsable in Redoc and Scalar. |
| Logic | Rules, lifecycles, automations | GoRules decision tables, state machines with action buttons, and BPMN workflows. |
| Delivery | Docker and CI | Compose file, Dockerfiles and CI workflows generated alongside the code. |
| Quality | Generated test suites | Rust request suites, API suites, Playwright specs and a browser smoke test of every screen. |
| Assistance | A chat for your users | Find records, run reports and open the application's own screens from a conversation. |
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.
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.
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.
Describe the application in plain language. AI agents propose the entities and relationships, and a person approves the design before anything is generated.
The modelling tool draws the YAML model as a laid-out diagram, so business and engineering review the same picture.
One rules-and-workflows editor for decision tables, status machines, processes and automations, with a dry run against a sample record.
Each project keeps its own Git history: drafts, named versions, restores and generations are all commits you can compare and roll back.
Most organisations are not starting from nothing. CEDM Platform reads existing systems into models, so modernisation starts from what is really there.
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.
A translator reads existing Java and Swing applications with ANTLR grammars and writes the same domain as a CEDM model.
Models written in the platform's earlier diagram notation translate construct for construct, with a report of anything that needs a decision.
Bring a process you run today. We will model it with you and generate the application in the same session.