~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

The pages serve a blog at /blog, built from Markdown posts in blog/

Closed
Closed chadtmiller.com asked to merge into main from chadtmiller.com/knotless:web/blog

What changes

A blog at /blog. knotless.dev serves a blog beside the app and the docs: an index of posts, newest first, a page per post at /blog/<slug>/, and a feed at /blog/rss.xml. It is drawn in the pages' own tokens, so it follows the colour scheme as they do.

Posts are Markdown in blog/. A post is blog/<slug>.md with front matter (title, description, date, author, draft), its pictures in blog/<slug>/. draft: true keeps a post off the built site while it is written; just blog serves the blog at http://localhost:4322/blog/ with drafts shown. blog/README.md and docs/development.md say how.

Why

The launch post needs a home at knotless.dev, and a place to preview it as it will look. The docs site already shows the pattern: a static Astro site built in the image into the pages' static/, which adapter-node serves as files. The blog is a second such site rather than part of docs-site/: Starlight is shaped for docs (sidebar, search, base /docs), and a plain Astro site keeps a post's page to a column of prose and its pictures.

No post lands here: this is the route alone, so the index says "Nothing posted yet." until the first post's own pull.

How it was checked

npm run build in blog-site/ builds the index and feed with no posts and leaves a draft out; astro dev shows a draft post, looked at desktop light and phone dark. The docs check now installs and builds blog-site/ too; the image build is left to the deploy.

Shortcomings

No social card for posts yet, and nothing in the app links to /blog.

chadtmiller.com added 1 commit
Approved

This adds an Astro site in blog-site/ that builds the Markdown posts in blog/ into static/blog. It has an index, a page per post and /blog/rss.xml. The docs workflow now installs and builds it, and the Dockerfile, .dockerignore, Justfile, AGENTS.md and the docs pages are updated to match.

I read the config, content schema, posts.ts, layout, post page, RSS endpoint, workflow and Dockerfile stages. The diff was too large to read whole because of the lockfile, so I didn't read every file in it, and I didn't read the pull's check results. I found nothing that must change. The draft filter keeps drafts out of the built site and shows them in astro dev. The RSS output escapes titles and descriptions. The Dockerfile stage follows the docs one.

One thing to check when the first post lands: no post has been built yet, so a relative picture link from blog/<slug>.md to blog/<slug>/… is untested in a production build. Build the launch post once with a picture before relying on it.