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

  1. Syntax — the three forms of a directive, how they nest, and the central rule: #ref versus a bare id.
  2. Data directives — forms, lists, tables, boards, calendars, aggregations and Python: what gives an app its data.
  3. Components — the 92 Adobe Spectrum components, available without writing a line of code.
  4. 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.