This article explains how to create and publish technical articles to the NGX-Ramblers CMS.
Technical articles are written in markdown and stored in non-vcs/technical-articles/. A publishing script handles uploading to the CMS and updating the index page automatically.
Files must start with a date in YYYY-MM-DD format. The full filename (minus extension) becomes the URL slug:
| Example Filename | Published Path |
|---|---|
2026-01-29-input-source.md |
how-to/technical-articles/2026-01-29-input-source |
2026-01-29-publishing.md |
how-to/technical-articles/2026-01-29-publishing |
The first heading determines the title shown in the index. Use this format:
# DD-Mon-YYYY — Article Title [#123](https://github.com/nbarrett/ngx-ramblers/issues/123)
The script extracts the title by removing the date prefix, so the index entry becomes:
- [29-Jan-2026 — Article Title](https://ngx-ramblers.org.uk/how-to/technical-articles/2026-01-29-article-name)
cp non-vcs/technical-articles/TEMPLATE.md \
non-vcs/technical-articles/YYYY-MM-DD-article-name.md
## Heading for sections### Subheading for subsectionsFrom the server directory:
CMS_USERNAME=<user> CMS_PASSWORD=<pass> npx tsx lib/release-notes/publish-technical-article.ts \
../non-vcs/technical-articles/YYYY-MM-DD-article-name.md
The script will:
how-to/technical-articles/<filename-slug>| Variable | Required | Default |
|---|---|---|
CMS_USERNAME |
Yes | — |
CMS_PASSWORD |
Yes | — |
CMS_URL |
No | https://www.ngx-ramblers.org.uk |
Running the publish command again will update an existing article. The index entry is only added once (duplicates are detected by path).
| File | Purpose |
|---|---|
non-vcs/technical-articles/TEMPLATE.md |
Starting template for new articles |
non-vcs/technical-articles/README.md |
Quick reference documentation |
server/lib/release-notes/publish-technical-article.ts |
Publishing script |
server/lib/release-notes/cms-client.ts |
CMS API client |