Limited offer: $250 off for the first 200 customers!Claim discount

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.