Targ Apps Docs
Targ Apps Site

Blog

How the Targ Apps marketing site blog works, including MDX frontmatter, routes, RSS, and tests.

The Targ Apps blog is part of the targ-apps marketing site. Posts are authored as MDX files with validated YAML frontmatter and rendered at /blog/[slug].

Why this project hosts the blog

  • targ-apps is the public site at targapps.xyz
  • targ-apps-docs is reserved for technical product documentation (Chroma, Chroma-Fs, etc.)
  • targ-apps-page-vmaspad is a deployment variant of the same marketing site and is not the canonical blog host

Add a new post

  1. Create a file in targ-apps/content/blog/your-post-slug.mdx
  2. Add frontmatter that matches the schema below
  3. Write the post body in Markdown/MDX below the closing ---
  4. Run npm test and npm run build inside targ-apps

Published posts are included automatically in:

  • /blog
  • /blog/[slug]
  • /blog/rss.xml
  • /sitemap.xml
  • prerender output at build time

Frontmatter schema

FieldRequiredTypeNotes
titleyesstringDisplay title
descriptionyesstringSummary for cards, SEO, and RSS
dateyesstringISO date YYYY-MM-DD
authoryesstringAuthor name
slugyesstringKebab-case URL slug
tagsnostring[]Defaults to []
draftnobooleanDefaults to false; drafts are excluded from the public site
authorAvatarnostringAvatar image path
readTimenostringDisplay string such as 6 min. read
backgroundImagenostringHero background image path
coverImagenostringFallback hero image when backgroundImage is omitted
intro.headingnostringOptional intro heading above the MDX body
intro.paragraphsnostring[]Intro paragraphs rendered above the MDX body

Example:

---
title: Welcome to the Targ Apps Blog
description: Introducing our new blog for product updates and engineering notes.
date: 2026-08-15
author: Targ Apps
authorAvatar: /logo.svg
readTime: 4 min. read
backgroundImage: /targapps-curve.svg
slug: welcome-to-targ-apps
tags:
  - announcement
  - studio
intro:
  heading: A home for studio stories
  paragraphs:
    - We build websites, mobile apps, and desktop software from Buenos Aires.
---

<Callout title="New on the site">
  Subscribe via RSS at <a href="/blog/rss.xml">/blog/rss.xml</a>.
</Callout>

## What you'll find here

Your MDX content goes here.

MDX components

Blog posts can use these MDX components:

  • <Callout title="...">...</Callout>
  • <Alert>...</Alert>

Headings rendered from ## in the MDX body populate the table of contents sidebar automatically.

Routes and feeds

URLOutput
/blogBlog index sorted by date descending, with category sidebar filtering on desktop
/blog/welcome-to-targ-appsExample post page
/blog/building-with-chromaExample post page
/blog/rss.xmlRSS 2.0 feed with atom:link self reference

The main site navigation includes a Blog link, and blog pages expose an RSS alternate link in route metadata.

The blog index uses a centered hero (Latest Insights & Updates), a left sidebar of category filters derived from post tags (desktop only), and a vertical article list with title, excerpt, author, and date. Filtering is client-side: selecting a tag shows posts that include that tag; All Articles resets the filter.

Validation and tests

Frontmatter is validated with Zod in app/lib/blog/schema.ts.

Tests live in:

  • app/lib/blog/format.test.ts
  • app/lib/blog/schema.test.ts
  • app/lib/blog/posts.test.ts
  • app/lib/blog/rss.test.ts
  • app/lib/blog/toc.test.ts
  • app/lib/blog/toc.server.test.ts

Run them with:

cd targ-apps
npm test

Build and prerender

Blog routes are prerendered during npm run build. Slugs are discovered from content/blog/*.mdx at build time so dynamic post URLs are included in the static output.

See also: SEO & Indexing

On this page