Developer guide
A ReactiveNET app is a Markdown document. Not a project, not a bundle: a text file any editor reads, in which some lines — the directives — become fields, lists, tables, charts and calculations.
This guide is the reference for whoever writes them by hand. Anyone who would rather describe the app in words can leave the writing to the assistant and come back here only to understand what it produced.
Where to start
- Syntax — the three forms of a directive, how they nest,
and the central rule:
#refversus a bare id. - Data directives — forms, lists, tables, boards, calendars, aggregations and Python: what gives an app its data.
- Components — the 92 Adobe Spectrum components, available without writing a line of code.
- Block editor — the same directives edited as blocks, with the slash menu and drag and drop.
A complete app
---
appId: expenses
title: Shared expenses
icon: receipt
---
::form{path="expenses"}
::input{field="what" legend="Item" required}
::input{field="price" legend="Price" type="number" min="0"}
::save{label="Add"}
::/form
::if-empty{path="expenses"}
Nothing yet. Add the first item above.
::/if-empty
::table{path="expenses" search page-size="10" deletable editform}
::column{field="what" label="Item"}
::column{field="price" label="Price" align="end"}
::column{field="createdAt" label="Added"}
::/table
Total: :sum{path="expenses" field="price" decimals="2"}
The form writes rows into the expenses collection, the table reads them back
with search, sorting and paging, the aggregation sums the column. There is
nothing else to configure: the document is the app.
- Directive syntax The three forms of a directive, the block that closes by name, the attributes and the difference between #ref and an id.
- Data directives Forms, lists, tables, boards, calendars, conditionals, aggregations and Python: the directives that give an app its data.
- Spectrum components The 92 Adobe Spectrum components available as directives, and the two things the manifests do not say.
- Block editor The same directives edited as blocks, with the slash menu, drag and drop and the frontmatter as a form.