zAppDev Create free account

Intended Design · The meaning behind the code

The Intended Design holds what your application means. Code is what it produces.

People and AI agents change the Intended Design. The engine checks every change as a whole and produces ordinary code. The Intended Design states every element and every relationship, so they do not have to be inferred from the code.

✓Relationships stated, not inferred✓Checked before it becomes code✓The Intended Design and the code are yours
The Intended Design

What the application means: elements and relationships, checked as a whole.

→produces
The code

What the Intended Design produces: ordinary code for your target stack that you can run anywhere.

What it is

One connected description of the application

The Intended Design is the application as people think about it: purposes, business concepts, rules and screens, and the links between them.

Written down, it holds the structure you draw in Studio and the behaviour you write in the language: business objects, forms, services, themes, roles, settings.

Elements are related to one another, so a form control is bound to a field, a button names the action it runs, and a permission protects an action.

The engine checks it, and everything else, including the code, is produced from it.

Database LayerEntityOrder
idUUID (primary)statusEnumtotalDecimal(10,2)customerRef(Customer)
draft→submitted→approved→fulfilledcancelled
✓validated across layers
Server LayerRuleOnly submitted orders may be approved
enforced_at
server
ui_behavior
Approve action disabled unless status = submitted
✓validated across layers
Interface LayerScreenOrderDetail
status
total
customer.name
lineItems
SubmitApproveCancel
gated by role + status
DATABASE LAYERSERVER LAYERINTERFACE LAYERhashasrefers toapplies toreadsgatesbound torunsOrderentitytotalDecimal(10,2)statusEnumCustomerentityOnly submitted ordersmay be approvedruleOrderDetailscreenApproveactionDATABASE LAYERSERVER LAYERINTERFACE LAYERhashasrefers toapplies toreadsgatesbound torunstotalDecimal(10,2)statusEnumOrderentityCustomerentityruleOnly submitted ordersmay be approvedApproveactionOrderDetailscreen

The same example as a graph: elements, and the relationships between them. Hover an element to see what it connects to.

The code is an output. The Intended Design is what you keep, review and own. How to read an Intended Design

The shape of every Intended Design

The shape of every Intended Design

This is what every application is made of: the types of element zAppDev knows, and the named relationships allowed between them. It is what the checks enforce and what an AI learns once.

✓Confirmed in the models?Still to confirm
Domain

Business Object

The things your business is made of.

Holds
classes · attributes · enums · associations · operations
Connects
Associations carry multiplicity, navigability and what happens on delete.
UX/UI

Form

A screen, a master page or a reusable part.

Holds
controls · view model · controller actions · datasets
Connects
Binds to business objects, runs actions written in the language, and its actions can require permissions.
Logic

The language

The one language for behaviour.

Holds
operations · actions · rules
Connects
Reads and writes objects, calls adapters, applies mappings, generates reports and reads settings.
Integration

Service

What the application exposes to others.

Holds
operations (verb, path) · data contracts · REST or MCP
Connects
Each operation is implemented in the language and can allow anonymous or signed-in callers.
Integration

API Adapter

How the application calls the outside world.

Holds
operations · structs · REST, SOAP, library or database
Connects
Called from the language. Its structs can be mapped to your own objects.
Integration

Automation flow

Work that runs without a person.

Holds
steps · schedule · inputs · outputs
Connects
Each step runs the language, can be restricted by permission, and can run on a schedule.
Data

Data Mapping

How one shape of data becomes another.

Holds
left and right structs · named mappings
Connects
Maps between external structs and your own objects, applied from the language.
UX/UI

Report

A printable or exportable document.

Holds
view model · pages · headers · entry points
Connects
Generated from the language, with a view model like a form.
UX/UI

Theme

The look of every screen.

Holds
variables · variations · component styles · LESS
Connects
Styles the forms, with light and dark variations.
Domain

Configuration

Who can do what, and how it is set up.

Holds
roles · permissions · settings
Connects
Roles grant permissions, and settings are read from the language.
Logic

Unit Test

Checks that behaviour still holds.

Holds
test operations · helpers · initialise · clean-up
Connects
Runs your operations. How tests tie to individual elements is still to confirm.
Still to confirm
Intent

Intent

Why the application exists.

Holds
goals · constraints · principles
Connects
Its connections are still to confirm.
Still to confirm

Built from the platform’s own model files and documentation. Where a relationship is not yet confirmed, it is marked “Still to confirm”, never presented as fact.

One example, measured

The List control

In this example, the same list of orders was built two ways.

In this example Custom build Native List control
What you write A helper class, a row-building operation, 46 lines of logic, 8 view-model entries and 8 hand-written styles A dataset and a list with four columns, and 24 lines of logic
What is produced for you The list as written: 1,863 lines The list, plus a server-side data source, saved views with sharing and download: 2,313 lines
Changing a column Four places One column
The rules and tests Six tests pass The same six tests pass, unchanged
24lines of logic
→
produced
2,313lines of code, about 96 for every line we wrote

Choosing the standard control meant half the logic and no helper class, and the rules did not have to change. A custom layout is still possible when you need something the control cannot do.

Counts are for this one example, measured on the generated solution. The list features are generated, and we have not tested each one.

An example

Rename a field and see what happens

Rename Price to UnitPrice on a product, in an application with forms, a service and a report.

In a code base

  1. Search the files for Price.
  2. Decide which hits are the field and which are other things with the same name.
  3. Edit the class, the form, the service, the report and the tests.
  4. Build, and find out what was missed, including names inside strings.

In the Intended Design

  1. Ask where the field is used, with Find Usages.
  2. Rename it with Refactor, in one place.
  3. Validate. Anything still using the old name is reported by element.
  4. Build. The code is produced from the corrected Intended Design.

Illustrative. Find Usages and Refactor are in the context menu of an Intended Design in Studio.

A safety net

For every change AI makes

AI will do more of the work on your software. The Intended Design gives you somewhere to check and control it.

1Editin Studio, or an AI agentthrough MCP2Validatethe whole Intended Design,not only the open editor3Buildthe engine producesthe code4Runthe generatedapplicationerrors: fix the Intended Designwant a change? Change the Intended Design, never the generated code1Editin Studio, or an AI agentthrough MCP2Validatethe whole Intended Design,not only the open editor3Buildthe engine producesthe code4Runthe generatedapplicationerrors: fix the Intended Designwant a change? Change the Intended Design,never the generated code

Validated first

The whole Intended Design is checked before a build, so an invalid change stops early and says which element is wrong.

Impact is a query

What uses this class? What would break if it changed? The Intended Design answers across forms, services and settings.

Reviewable history

Changes to the Intended Design are kept in Git, with update, commit and log in Studio. A deployment is made from committed Intended Designs.

Regenerate, do not patch

Generated files are rebuilt every time, so a fix belongs in the Intended Design and applies everywhere it matters.

Where code is the better choice

An Intended Design is not for everything

A novel algorithm, an unusual stack or performance-critical code is easier to write as plain code. zAppDev keeps that door open: logic is written in the language, and external libraries and custom libraries can be called from the Intended Design. The Intended Design carries what is structured and repeated, and code carries what is new.

Cost and speed

We believe working on an Intended Design costs less than working on a large code base. We have not measured it, so this page makes no claim about it.

Familiarity

AI knows common languages best. The application’s MCP server and the documentation give it the vocabulary of the Intended Design.

Reference book

The Intended Design in the agentic world

A short reference book on the role and purpose of the Intended Design: the concept, the comparison with working on a code base, the anatomy of an Intended Design, the agent’s workflow, governance, ownership and the limits. It includes a measurement we made and says what has not been measured. Draft 0.97, 17 pages.

In the agentic world, the Intended Design is the asset.

Ownership

You own the Intended Design and the code

The Intended Designs you create, the source code zAppDev produces from them, and your data are yours. You can download the Intended Designs and the generated solution at any time. The generated code is open and free to run anywhere.

See the Intended Design in Studio

Create a free account and open a template application to look at its Intended Design.

Create free account Read the documentation