tables
Each entry has db, col and an optional admin block. Tables are auto-migrated at startup.
| col key | description |
|---|---|
| name | SQL identifier: letters, digits, underscore |
| type | id | int | text | real | bool | blob; at most one id column per table |
| index | true — SQL index; required for columns used in views.filter_by |
| fts | true — FTS5 full-text index for the column |
The admin block puts the table into the CMS:
| key | description |
|---|---|
| title | section heading in the admin UI |
| list_columns | columns shown in the list view |
| form_fields | create/edit form: name, widget (text | textarea | number | checkbox), required, max_length |
| permissions | roles allowed in; the admin role is always allowed; empty list — admin only (this site's Feedback section is an example) |