Welcome — this is the blog

Published 2026-05-01

Welcome

This is an example post seeded into the BlogPost table the first time the container starts. It lets you see what the blog reader looks like end-to-end before you have any real content.

How this works

The blog has no admin UI yet. To author a real post, insert a row directly into the postgres BlogPost table. Required columns:

  • slug (unique URL slug, lowercase-with-dashes)
  • title
  • excerpt (1–2 sentences shown on the index)
  • body (full markdown)
  • draft defaults to false — set to true to hide a post

Example via psql:

INSERT INTO "BlogPost" (id, slug, title, excerpt, body, "publishedAt", "updatedAt")
VALUES (
  gen_random_uuid()::text,
  'my-first-post',
  'My first post',
  'Short summary that shows on the index page.',
  '# Hello

Markdown body goes here.',
  NOW(),
  NOW()
);

Engagement

Every post collects:

  • ⭐ 1–5 star ratings (one per visitor, can be changed)
  • 👍 anonymous likes
  • 👍/👎 "was this useful?" with optional text suggestion
  • Threaded comments (profanity-filtered, rate-limited)

All identifiers are IP-hashed — no accounts, no tracking.

Delete this post

When you're ready, remove this seed:

DELETE FROM "BlogPost" WHERE slug = 'welcome';
Rate this post
Was this helpful?
Comments ()
0/2000