Skip to main content
Template logoTemplate
All posts
General

Markdown Showcase

A sample post that exercises every Markdown element the blog renders.

This is the sample post shipped with the template. It exists to show what the blog looks like with real content, and to verify that every Markdown element renders correctly. Replace it with your own writing, or delete it β€” posts live in content/blog/ as Markdown files.

Headings and text

A third-level heading

A fourth-level heading

Body text supports bold, italic, bold italic, strikethrough, inline code, and links to another page on this site or to an external site. Bare URLs are linked too: https://developers.cloudflare.com/workers/

Press Cmd + K to open the command palette.

Lists

An unordered list, with nesting:

  • Accounts, payments and email
    • Email and social sign-in
    • Subscriptions and one-time purchases
  • Content collections for the blog and changelog
  • Deployed to Cloudflare Workers

An ordered list:

  1. Clone the template
  2. Fill in the environment variables
  3. Run the database migrations
  4. Deploy

A task list:

  • Set the site name and metadata
  • Replace the logo and OG image
  • Write the first real post
  • Point the domain at the Worker

Quotes

Configuration that fails loudly beats configuration that fails silently.

β€” the deployment checklist, learned the hard way

Code

Inline code such as pnpm dev reads differently from a fenced block:

import { createServerFn } from '@tanstack/react-start';
import { z } from 'zod';

export const greet = createServerFn({ method: 'POST' })
  .inputValidator(z.object({ name: z.string().min(1) }))
  .handler(async ({ data }) => {
    return { message: `Hello, ${data.name}` };
  });
pnpm install
pnpm dev

Tables

FeatureProviderEnabled by
DatabaseCloudflare D1preset.auth
StorageCloudflare R2preset.storage
EmailCloudflare Emailpreset.mail
PaymentsStripe / Creem / WaffoVITE_PAYMENT_PROVIDER

Images

A sample cover image

Details

Where do posts live?

Each post is a Markdown file under content/blog/. The frontmatter carries title, description, date, category and image. The slug comes from the file name, so markdown-showcase.md becomes /blog/markdown-showcase. Add .zh before the extension for the Chinese version.


That horizontal rule above is the last element. Everything the blog renders is plain GitHub Flavored Markdown1, so anything you can write in a README works here too.

Footnotes

  1. Parsed with remark and rendered with rehype. See src/lib/markdown.ts. ↩