Fisher Evans' blog. Astro + Pages CMS, served by Cloudflare Pages, media on R2.
| Layer | Tech |
|---|---|
| Site generator | Astro (blog starter, content collections) |
| Search | Pagefind (built post-build, lazy-loaded in browser) |
| Editing UI | Pages CMS at app.pagescms.org |
| Hosting | Cloudflare Pages, custom domain log.fisher.sh |
| Media | Cloudflare R2 at media.fisher.sh (zero egress); offsite mirror to Backblaze B2 |
| Authoring | Bot-driven !upload from Discord pushes media to R2, returns paste-ready URLs |
Frontmatter for posts in src/content/posts/:
title: string # required
date: date (YYYY-MM-DD) # required
description: string? # optional
project: string? # optional, populates /projects/<project>/
tags: string[] # default [], populates /tags/<tag>/
hasVideo: boolean # default false
heroImage: image? # optional, served at the top of the post
updatedDate: date? # optional, shown alongside the original date
draft: boolean # default false; drafts hidden from listings + RSSSchema is enforced at build time via astro:zod in src/content.config.ts. Bad frontmatter fails the build.
/— recent posts/posts/<slug>/— individual post/tags/— tag index,/tags/<tag>/— posts by tag/projects/— project index,/projects/<project>/— posts by project/search/— Pagefind in-browser search/rss.xml— RSS feed/sitemap-index.xml— sitemap (auto)/about/— site colophon
npm install
npm run dev # http://localhost:4321
npm run build # builds + runs pagefind into dist/
npm run preview # serve dist/ locallyBuild command for Cloudflare Pages: npm run build (which is astro build && pagefind --site dist).
Output dir: dist.
Quick path (any browser, including phone):
- https://app.pagescms.org → open this repo.
- Posts collection → new post → fill the frontmatter form, write the body in markdown.
- Need media? Drop the image into
#opsin Discord and!upload <slug>. Bot returns themedia.fisher.sh/…URL, paste it into the post. - Save → Pages CMS commits → CF Pages builds → live within a couple of minutes.
Local path:
- Edit markdown files under
src/content/posts/. npm run devfor live preview.git push→ CF Pages auto-deploys.
Built as part of nottingham-cloud milestone 4
— see issues #68 through #81 for the full setup pipeline.