| task | steps |
|---|
| add a content type | in settings.json add a table with columns and an admin block, add it to cms.menu, then ./cms reload — the table is created automatically and CRUD appears in the admin. The docs and doc_groups tables of this site are a working reference. |
| publish it on the site | add a view and a page route pointing to a new template in hbs/, then restart — new URL paths are registered at startup; ./cms reload applies everything else (templates, views, tables) |
| give it initial content | put a seed/<table>.json file next to the config — a JSON array of rows, inserted once while the table is empty. This documentation arrived that way. |
| accept a public form | add a table for submissions plus an api POST route (fields, honeypot, rate_limit) and a form in a template — the Contact page of this site is a working one |
| add a user | admin → Users → create an invite link and send it; the person sets their own password (24 h, single use) |
| restrict access | admin.permissions on the table: list the roles allowed; empty list = admins only |
| change a password | Dashboard → Change password, or ./cms passwd on the server |
| back up | copy the SQLite files from db/ — that is all the data, including this documentation |
| reset the example | ./cms def-help — overwrites files and database, prints a fresh admin password |