P
PaperHouseastro theme ~
Customize

Blog Posts

Create and edit journal posts in PaperHouse — categories, tags, excerpts, reading time, and prev/next navigation.

Blog Posts

Blog posts are called “journal” in PaperHouse. Each post is a markdown file in src/content/blog/. The filename becomes the URL slug.

The rule

Filename = URL slug.

  • ink-that-breathes.md → /blog/ink-that-breathes
  • slow-web-manifesto.md → /blog/slow-web-manifesto
  • my-first-post.md → /blog/my-first-post

Creating a post

Create a new file in src/content/blog/. For example, src/content/blog/slow-design.md:

---
title: "Slow Design — Why Faster Is Not Always Better"
description: "A short essay on why slower websites can convert better than fast ones — and how to design for patience."
date: "2026-04-15"
category: "Journal"
cover: "https://picsum.photos/seed/slow/1200/800"
excerpt: "Faster is not always better. Sometimes slower wins because it lets the user feel the craft."
tags: ["Slow Web", "Design", "Essay"]
---

# Slow Design

Faster is not always better.

A portfolio that loads in 0.2 seconds but feels empty converts worse than one that loads in 0.8 seconds with soul.

## What "slow" means

Slow does not mean technically slow. It means the design gives the user time to feel the work.

- Space between sections
- Type that breathes
- Images that earn their place
- Motion that serves, not decorates

## Why this matters

Users do not buy speed. They buy **memory**. A portfolio that feels like paper sells better than one that feels like a spreadsheet.

Accessible at /blog/slow-design.

Frontmatter fields

Required

  • title — displayed as the H1 and in cards
  • description — used for SEO meta and OG tags
  • date — publication date, used for sorting (format: YYYY-MM-DD)
  • category — the post category. Links to /category/[slug].
  • cover — the main image URL
  • excerpt — short summary shown in cards and previews
  • tags — array of tags. Each tag links to /tag/[slug].

Optional

None. All fields above are required by the schema.

Date and sorting

Posts are sorted by date in descending order — newest first.

Format: YYYY-MM-DD (ISO 8601). Example: 2026-04-15.

Sorting affects:

  • Blog listing order
  • Home page journal preview (shows 3 newest)
  • Prev/next navigation on each post

Categories

Each post belongs to one category. The category page lists all posts and works with that category.

Common categories:

  • Journal
  • Essay
  • Notes
  • Tutorial
  • Business

The category slug is generated from the name: "Slow Web" → /category/slow-web.

Tags

Tags are flexible keywords. A post can have any number:

tags: ["Typography", "Editorial", "Slow Web"]

Each tag links to /tag/[slug]. The tag page lists all posts with that tag.

Tags are shared across posts — if two posts both have “Design”, they appear on the same tag page.

Reading time

PaperHouse calculates reading time automatically from the body:

readingTime = Math.max(1, Math.round(post.body.split(/\s+/).length / 220))

Average reading speed is 220 words per minute. A 440-word post shows “2 min read”.

No configuration needed.

Body content

Below the frontmatter, write the post in markdown:

# Post title

Opening paragraph.

## Section

Details with **bold** and _italic_ and [links](/works).

- List item one
- List item two

> Blockquote for pull quotes.

\`\`\`bash
npm run dev
\`\`\`

The body renders in a prose layout with:

  • Serif headings
  • Serif body text at 19px
  • Lime underline decoration on links
  • Syntax-styled code blocks
  • Styled blockquotes

Cover image

The cover appears at the top of the post in a 16:9 aspect ratio.

For local images:

public/
└── blog/
    └── slow-design/
        └── cover.jpg

Then reference:

cover: "/blog/slow-design/cover.jpg"

Excerpt

The excerpt appears in:

  • Blog listing cards
  • Home page journal preview
  • Related posts

Keep it under 160 characters for the best look.

Prev/next navigation

At the bottom of each post, PaperHouse shows the previous and next post in the collection.

  • Previous — the post published before this one (older date)
  • Next — the post published after this one (newer date)

No configuration. Automatic from the collection.

SEO

Each post uses its description for meta and OG tags.

For best results:

  • Write a unique description for each post
  • Keep it under 160 characters
  • Include the post’s main keyword
  • Make it enticing — this is what shows in Google search results

Deleting a post

Delete the markdown file from src/content/blog/. It disappears from:

  • The blog listing
  • The home page (if it was in the top 3)
  • Category listings
  • Tag listings
  • Prev/next navigation on other posts

Common mistakes

“My post does not show up.”
Check the frontmatter — every required field must be present. Astro silently skips files with invalid schemas.

“My date is wrong.”
Use quotes: date: "2026-04-15" not date: 2026-04-15.

“My tags do not link.”
Tags are case-sensitive in display but slugified for URLs. "Slow Web" → /tag/slow-web.