For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/web/blog-content.md (or send Accept: text/markdown).
Writing blog articles
Publish local, typed articles with working categories and guide links.
Setup and configuration
Before any step, read Before you start and Terminal basics. These instructions assume you opened the full supastack monorepo in VS Code; its root package.json marks the repository root. In pnpm commands, a workspace package is an app or shared-code folder; in the product, a workspace is a team's data container and security boundary. corepack pnpm --filter ... selects one package from the monorepo while commands run from its root. If you opened only a synced mobile or desktop folder, it does not contain the Web backend, Docker setup, or root scripts: run the backend from this monorepo or a reachable hosted server, and use the platform folder's own scripts. An environment variable is a named setting stored in a local .env file or your hosting dashboard; restart the relevant app after changing it, and keep server secrets out of NEXT_PUBLIC_ and EXPO_PUBLIC_ values.
1. In VS Code open apps/web/src/resources/content.ts and copy a complete nearby article as your starting point; article copy lives in the repository, not in a publishing dashboard.
2. Give the article a new slug, title, category, date, sections, and an existing guide slug.
3. From the repository root run corepack pnpm --filter @supastack/web dev and open http://localhost:3000/blog/<your-slug>. Expected: the article and its related-guide link load locally before you share the URL.
Blog content is stored in src/resources/content.ts and blog-posts.ts. This is repository-managed content; there is no CMS publishing service. Each Post needs a unique slug, title, description, category, date, related guide, and sections.
{
slug: 'your-article',
title: 'A specific reader question',
category: 'Guides',
date: '2026-09-07',
guide: 'web/local-setup',
sections: [{ id: 'start', title: 'Start here', paragraphs: ['Your original text.'] }]
}Commands to copy
Follow the comments to see which folder a command runs in. If two terminals are labeled, open two terminal windows and keep the first command running while you use the second.
corepack pnpm --filter @supastack/web dev
# Replace <your-slug> with the article slug:
# http://localhost:3000/blog/<your-slug>
corepack pnpm test -- apps/web/src/resources/content.test.tsImplementation workflow
Follow a complete existing Post object for the remaining type fields. Keep the slug stable after publication so shared URLs continue to work. Headings need unique section IDs for the table of contents and anchor links.
Categories derive from the article catalogue. The index uses URL-based filtering, and article routes generate metadata from the content. The guide value must match an existing documentation slug; related content should lead to a useful next step.
Verification and troubleshooting
If the article returns 404, check that its slug is unique and that it was added to the article list in apps/web/src/resources/content.ts. If the table of contents jumps nowhere, give every section a unique id. Run corepack pnpm test -- apps/web/src/resources/content.test.ts from the root to see content validation errors.
Run the content tests, open the article route, follow its related guide, and check the filtered index. Check dates and claims against the source material. Do not publish placeholder links or claim that an integration has been verified merely because it appears in an article.