Skip to main content
Cordango has one idea in the middle of it: an application is a document, not a codebase. You describe what the application is, and something else works out what it has to be to run.
Everything above the App Definition is open source and runs offline. cordango check needs no model, no database, no account and no network.
Platform features are currently in invite-only beta. Sign up here to be considered for one of our next phases.

The four things worth understanding

Semantic source

The .cordango.yaml files you write. One aggregate per file: an entity, a lifecycle, a role, a screen.

The App Definition

The single JSON document your source compiles into. The contract everything downstream reads.

The schema

The formal gate. Why you should ask cordango vocabulary instead of reading it.

Targets

What turns a definition into a running application, and how each one declares its limits.

Workspaces and apps

A workspace holds many apps. That is deliberate: a company system is several applications that reference each other, not one application with everything in it.
Apps in one workspace can reference each other’s records, and they can reference core apps that the platform provides to every workspace.

Aggregates and scope

An aggregate is one addressable thing: an entity, a lifecycle, an action, an automation, a role, a screen. It is the unit a file holds, the unit a change is scoped to, and the unit cordango inspect describes.
The aggregate kinds are identity, domain, behaviour, access, screen and tab. They matter when you change an app through semantic operations, where --scope names the one aggregate a change may touch.

Coherent, complete, valid

Three different words that get used interchangeably elsewhere and mean distinct things here.
error
The app does not hold together. A reference points at nothing, a lifecycle names a state that does not exist. Fix it.
normal
It holds together but is not a finished application: no screen to land on, nothing to create. This is the usual state mid-build. It publishes, with reasons printed.
a separate question
Whether one specific generator can build it. Ask with cordango check --target <id>.