Adding a README to an app
Set thereadme field on your app:
metadata.toml
Formatting
Thereadme is a string, rendered as Markdown in the dashboard. Use TOML
multi-line strings for readability:
metadata.toml
Markdown accepts HTML, so HTML/CSS/JS works too, but not all of it renders
reliably in the dashboard. Proceed with caution.
Reference a README.md file
Reference aREADME.md file instead of inlining. It’s easier to manage for longer
documents:
metadata.toml
Tables
Markdown tables render as interactive data tables with styled headers, click-to-sort columns, and horizontal auto-scroll when the content is wider than the page.README.md
inline code
render inside cells. Column alignment from the delimiter row (:---, :---:,
---:) is preserved.
Searchable tables
Add a<nuon-table-search> tag directly before a table to render a search box
that filters the rows client-side as the viewer types.
README.md
column— which column(s) to search, by header name. Comma-separate for multiple (e.g.column="name,region"). Omit to search every column.placeholder— custom placeholder text for the search box (defaults to “Search table…”).
<table> markup. HTML tables render through
the same common table component as markdown tables (sortable headers, shared
styling), and a <nuon-table-search> marker before one adds the search box:
README.md
colspan/rowspan or multiple header rows can’t be represented
this way, so they render as authored (with any custom markup preserved).
Collapsible sections
Use HTML<details> and <summary> tags to create expandable sections. These
render with styled expand/collapse behavior, including a rotate animation on
the chevron icon.
README.md
<details>.
Code blocks
Fenced code blocks with a language identifier get syntax highlighting.README.md
bash, go, typescript, python, hcl, yaml,
sql, and many more.
JSON code blocks render as an interactive tree viewer that you can expand and
collapse:
README.md
Mermaid diagrams
Code blocks with themermaid language render as diagrams.
Flowcharts (graph TD, flowchart LR, etc.) render as interactive diagrams
with pan, zoom, and drag via ReactFlow. Supported directions: TD, TB, LR,
RL, BT.
README.md
style directives.
All other diagram types (sequence, class, state, etc.) render as static SVG:
README.md
Callouts
READMEs support GitHub-style callout blockquotes. These render with a colored left border, icon, and label.README.md
NOTE (blue), TIP (green), IMPORTANT (purple),
WARNING (orange), and CAUTION (red). Regular blockquotes without a type
prefix render normally.
Local time
Use the<nuon-time> tag to render timestamps in the viewer’s local timezone.
README.md
time— ISO 8601 timestamp stringseconds— Unix timestamp (alternative totime)format—relative(e.g. “2 hours ago”),short-datetime,long-datetime,time-only(defaults toshort-datetime)
relative format auto-updates and shows a tooltip with the full date on
hover.
Display components
READMEs support custom<nuon-*> HTML tags that render as dashboard UI
components. These are purely presentational and work in both app-level and
install-level views.
Badge
Renders an inline badge.README.md
theme—brand,default,neutral,success,warn,error,infosize—sm,md,lgvariant—default,code
Label badge
Renders a key/value label badge — useful for tagging installs with metadata like environment, region, or version.README.md
label attribute, or as
separate key and value attributes.
Attributes:
label— colon-separated key:value string (e.g.env:production)key— label key (alternative tolabel)value— label value (alternative tolabel)theme—brand,default,neutral,success,warn,error,infokey-theme— override the theme for just the key portionsize—sm,md,lgvariant—default,code
theme here only controls how a badge renders inside a README. To set the color a label key uses across the dashboard (on apps, installs, and components), see label colors.
Banner
Renders a callout banner for important notices.README.md
theme—brand,default,neutral,success,warn,error,info
Status
Renders a status indicator dot with label.README.md
status— any string (e.g.active,provisioning,error)variant—default,badge,timeline
Group
A flexbox layout container for arranging other elements.README.md
gap (number), align, justify, wrap ("true" or "false",
defaults to true).
Card
Wraps content in a styled card container with border, padding, and shadow.README.md
class— optional CSS class name for custom styling
Tabs
Renders tabbed content sections. Wrap<nuon-tab> elements inside a
<nuon-tabs> block:
README.md
<nuon-tab> requires a name attribute. The content inside each tab is
full markdown.
Modal
Renders a button that opens a modal dialog containing markdown content.README.md
heading, trigger (button label, defaults to “View”), size.
Panel
Same as modal, but slides in from the side of the screen.README.md
heading, trigger (button label, defaults to “View”), size.