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)titleexcerpt(1–2 sentences shown on the index)body(full markdown)draftdefaults tofalse— set totrueto 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';