Blog
File-based blog — no CMS or database required. All posts live in one TypeScript file.
How it works
Posts are TypeScript objects in src/blog/_assets/content.ts. The content field is JSX — write markup directly. Next.js pre-renders a static page for each post at build time.
Adding a post
Open src/blog/_assets/content.ts and add an object to the articles array:
{
slug: "how-to-launch-fast",
title: "How to Launch Fast Without Cutting Corners",
description: "Shown on the blog index card — keep it under 160 characters.",
categories: [{ slug: "growth", title: "Growth" }],
author: {
name: "Alex",
role: "Founder",
avatar: "/portrait.png",
},
publishedAt: "2026-06-11",
image: {
src: "/blog/how-to-launch.jpg",
urlRelative: "/blog/how-to-launch.jpg",
alt: "Launch illustration",
},
content: (
<>
<h2>Your heading</h2>
<p>Post content as JSX. Use any standard HTML elements.</p>
<ul>
<li>Item one</li>
<li>Item two</li>
</ul>
</>
),
},Routes
/blog— index listing all posts as cards with image, title, and excerpt./blog/[slug]— individual post with full content, author info, and category tags.
Post images
Place post images in /public/blog/ and reference them in the image.src field. They appear as the card thumbnail and as a hero image on the post page.
TipBlog posts are one of the best long-term SEO investments. Write about problems your target customers search for and link back to your product as the solution.