Alpha: Ships on npm at 7.0.0-alpha.07.0.0-alpha.0

post

One post: a back link, a dateline, the body and share links.

Theme

4 pages in 4 Businesses name post in this build.

Use post for one dated piece: a blog post, a release note, an issue of a letter. The article carries the back link to its blog page, the dateline, the body in the article Markdown subset, and share links where the Business wants them.

Sections in order

Fields that matter

Section typeFieldTypeBoundsRefused as
articlehead.titlestring ≤801–80article.head.title
articlehead.dek ?string ≤3601–360article.head.dek
articlehead.back.labelstring ≤161–16article.head.back.label
articlebodystring ≤120001–12000article.body
articleshare.on1–5 × "reddit" | "x" | "linkedin" | "bluesky" | "hackernews"1–5article.share.on
Every field of article
FieldTypeReqBoundsRefusal
head.backobject—
head.back.hrefstring ≤160yes1–160article.head.back.href
head.back.labelstring ≤16yes1–16article.head.back.label
head.tagstring ≤201–20article.head.tag
head.datelineobject—
head.dateline.datestring (pattern)yes—
head.dateline.readobject—
head.titlestring ≤80yes1–80article.head.title
head.dekstring ≤3601–360article.head.dek
shareobject—
share.urlstring ≤160yes1–160article.share.url
share.titlestring ≤80yes1–80article.share.title
share.labelstring ≤16yes1–16article.share.label
share.on1–5 × "reddit" | "x" | "linkedin" | "bluesky" | "hackernews"yes1–5article.share.on
bodystring ≤12000yes1–12000article.body
copyboolean—

Starter record

Sideworkpages/sidework/issues/the-first-invoice.json4.3 KB post.json
{
  "$schema": "https://next.mdxui.dev/schema.json",
  "theme": "vaultline",
  "frame": "none",
  "template": "post",
  "title": "The first invoice · Sidework",
  "description": "What goes on a first invoice, when to send it, and the one line that gets it paid on time.",
  "meta": {"type":"article"},
  "sections": [
    {
      "kind": "nav",
      "shell": {"inset":"bleed","density":"none","surface":"glass","sticky":true},
      "block": {
        "type": "nav",
        "menu": "overlay",
        "collapse": 820,
        "brand": {"href":"/","text":"Sidework","mark":"file-text"},
        "links": [["/archive","Archive"],["/about","About"]],
        "cta": {"href":"/subscribe","label":"Subscribe"}
      }
    },
    {
      "kind": "article",
      "shell": {"inset":"article","density":"article"},
      "block": {
        "type": "article",
        "head": {
          "back": {"href":"/archive","label":"Archive"},
          "tag": "Money",
          "dateline": {"date":"2026-05-12","read":{"minutes":6,"unit":"min read"}},
          "title": "The first invoice",
          "dek": "What goes on it, when to send it, and the one line that gets it paid on time."
        },
        "share": {
          "url": "https://sidework.example/issues/the-first-invoice",
          "title": "The first invoice",
          "label": "Share",
          "on": ["linkedin","bluesky","x","reddit","hackernews"]
        },
        "copy": true,
        "body": "The first invoice is where a side project becomes a business. It is also where most people undercharge, send late and wait.\n\n## Send it the day the work lands\n\nAn invoice sent with the work reads as part of the work. One sent a week later reads as a request. Attach it to the delivery email.\n\n## Seven lines, no more\n\n1. Your name or business name, and how to reach you.\n2. The client and the person who approves payment.\n3. An invoice number. Start at 1001; nobody needs to know it is your first.\n4. The date sent and the date due.\n5. One line per piece of work, each with its price.\n6. The total, and any tax on it.\n7. How to pay: one method, written out in full.\n\n## The line that gets it paid\n\n> Due 14 days from today, on 26 May.\n\nName the date, not the terms. \"Net 14\" asks the client to count. A date goes straight into a calendar.\n\n## The template\n\n```text\nINVOICE 1001                         Sent 12 May 2026\n                                     Due  26 May 2026\nFrom  Your Name, you@mail.example\nTo    The Client, accounts@client.example\n\nLogo design, three rounds                     600.00\nBusiness letterhead                           150.00\n                                     Total    750.00\n\nPay by bank transfer to the account below.\n```\n\n## When it is late\n\nSend one short reminder the day after the due date. Issue 9 holds the three reminders that follow it."
      }
    },
    {
      "kind": "closing",
      "shell": {"inset":"contained","density":"closing","surface":"tint"},
      "block": {
        "type": "closing",
        "layout": "stack",
        "head": {
          "eyebrow": "Issue 2 is next",
          "title": "Get the next 23.",
          "lede": "Every Tuesday, one task done in full. The paid letter opens every back issue."
        },
        "actions": [
          {"href":"/subscribe","label":"Subscribe","kind":"solid"},
          {"href":"/archive","label":"The archive","kind":"ghost"}
        ]
      }
    },
    {
      "kind": "footer",
      "shell": {"inset":"contained","density":"footer"},
      "block": {
        "type": "footer",
        "layout": "row",
        "brand": {"href":"/","text":"Sidework","mark":"file-text"},
        "blurb": "One letter a week for people running a business beside a job.",
        "columns": [
          {"title":"Read","links":[["/archive","Archive"],["/issues/the-first-invoice","Issue 1"]]},
          {"title":"Sidework","links":[["/about","About"],["/subscribe","Subscribe"],["/terms","Terms"]]}
        ],
        "form": {
          "action": "/subscribe/sent",
          "label": "The Tuesday letter",
          "placeholder": "you@mail.example",
          "submit": "Subscribe"
        },
        "note": [
          "Sidework is a worked example on mdxui.dev, not a customer.",
          "Rendered by @mdxui/site. Forms here do not send."
        ]
      }
    }
  ]
}

Other Templates

Sidework
blog

5 pages · 4 of 6 Businesses

Ledgerhouse
article

24 pages · 6 of 6 Businesses

Ledgerhouse
contact

6 pages · 6 of 6 Businesses

On this page