I would like to be able to publish articles that readers can know, should be read in a sequence. for example:
- A tutorial in parts, e.g. "Haskell for beginners, parts 1 -> 7".
- Weekly reports of a project, or a daily journal of sorts.
- A story or a comic in chapters.
- A long article broken into parts, each describing a different part of the topic being explored.
Why I think tags are not a solution:
- Tags have no order themselves. Readers must find the order from the dates or the document's name(ureliable).
- A tag is just a string. Two apps can use the same string for different purposes.
Leaflet for example has a "chapter" view that I guess, groups posts from the text of their titles. This does work, but it is more of a guess that other apps need not read similarly. A shared record type lets each app show the same series in the same order.
Proposal #
Record #
site.standard.series, record key tid.
| Field | Type | Required | Description |
|---|---|---|---|
site |
string:uri |
yes | The publication (at://) or publication URL (https://). Same meaning as site in site.standard.document. |
title |
string |
yes | Title of the series. Same limits as a document title. |
items |
array<site.standard.series.item> |
yes | The documents, in reading order. The first item is to be read first. |
createdAt |
string:datetime |
yes | Time when the series was made. |
path |
string |
no | Path of a page for the series, relative to the publication URL. |
description |
string |
no | Short description. Same limits as a document's description. |
coverImage |
blob |
no | Cover image, less than 1 MB. |
updatedAt |
string:datetime |
no | Time of the last change, for example a new item or a new order. |
site.standard.series.item:
| Field | Type | Required | Description |
|---|---|---|---|
document |
string:uri |
yes | The site.standard.document record(at://). |
label |
string |
no | Short label, for example "Part 2" or "Week 7". If there is no label, the app can show the position number instead. |
Example #
{
"$type": "site.standard.series",
"site": "at://did:plc:7ldwh27x3xbmj3dg2yuwddsc/site.standard.publication/abcdxyz123456",
"title": "Haskell for beginners",
"path": "/series/haskell-for-beginners",
"items": [
{ "document": "at://did:plc:7ldwh27x3xbmj3dg2yuwddsc/site.standard.document/abcdxyz123456", "label": "Part 1" },
{ "document": "at://did:plc:7ldwh27x3xbmj3dg2yuwddsc/site.standard.document/abcdxyz123456", "label": "Part 2" },
// ...
],
"createdAt": "2026-01-01T00:00:00.000Z"
}