Documentation · 2 of 4
Writing an issue
Each issue is a file in src/content/issues/. The filename is the address.
---
title: 'The oldest ship on the loop'
dek: 'Average vessel age is falling, but the average hides a tail.'
date: 2026-09-15
topics: ['Capacity', 'Carriers']
---
The free part.
<!-- cut -->
The members part.
The Cut
The marker <!-- cut --> (in an .mdx file, {/* cut */}) ends the free part. Everything after it is removed while the site is built: it is not in the page, the feed or the search index. Put the marker on its own line between paragraphs; the build stops if it sits inside a list or a quote.
After pnpm build, run pnpm check:cut. It looks for every members passage, and every members picture, in the built site and fails if it finds one.
What you don’t type
The issue number, the week label, the word counts on the meter and the topic pages are worked out from the files. Numbers follow the dates, starting at newsletter.firstIssue.
Pictures
Put the file in src/content/issues/images/ and link it relatively. A line in emphasis right after the picture becomes its caption.

_Altenwerder, Hamburg, July 2009. Photo: Martin Damboldt, CC0._
Briefing components
Rename an issue to .mdx to use KeyNumbers, LaneTable and Callout without importing them. How an issue is put together uses every one of them.
Next: Subscribe forms