Anatomy of a Project
BuildingA reference entry showing every field a project supports and how each one renders. Copy it, replace it, ship it.
This entry is a template. It documents every project field and shows how each renders, so the next project is just a matter of swapping the contents.
The frontmatter fields
title— the project name, shown in the list and as the page heading.description— one sentence. It’s the summary in the list and the dek on the detail page.status— one ofbuilding,planned,ongoing, orshipped. It renders as a tag;buildingglows honey,ongoingreads sage, the rest stay quiet.stack— the tech, as a list. It renders as a·-separated line in mono.year— used for sorting and reference.featured—truesurfaces the project on the home page. Keep this to a small handful.order— manual sort weight; higher numbers float to the top among featured projects.links— optionalgithubanddemoURLs. Each renders as an underlined link only if present, so an emptylinksblock shows nothing.
The body is plain Markdown
Everything under the frontmatter is the project write-up. The same prose tools as a blog post apply — bold, italic, links, and inline code.
Use sub-headings to structure longer write-ups
A “How it works” section, a “Current status” section, a “What’s next” — whatever the project needs. Lists work too:
- What problem it solves.
- The one idea it’s built around.
- Where it stands right now.
Code blocks render the same way they do in posts:
export function statusLabel(status: Status): string {
return STATUS_LABELS[status] ?? "Unknown";
}
Writing a new project
Copy this file, rename it to something URL-friendly like my-project.md, replace the frontmatter and body, and push. Set featured: true if it should appear on the home page; leave it off otherwise. That’s the whole workflow.