SM Fire Brigade library site: from static page to Worker-backed system
The SM Fire Brigade project moved from a simple static homepage into a Cloudflare Worker-backed library system with routing, image lifecycle handling, and title history tracking, across 36 commits from 2026-02-01 to 2026-02-15.
TL;DR
- Started as a lightweight informational page with quick visual iteration.
- Added library-specific routing and navigation (
/library,about,visit) and cleaned static/Worker handoffs. - Standardized account/deploy guardrails and project memory so operations were repeatable.
- Consolidated assets and fixed real-world routing issues, including typo-safe
/libaryredirect support. - Added persistence features: title history counts, stale-title endpoint, R2 cleanup, and one-time backfill endpoint.
2026-02-01 to 2026-02-03: basic site shape and identity
The early phase was straightforward and visual:
- set title and base HTML structure
- introduce
site.cssvariables and responsive behavior - iterate logo/header usage and thumbnail presentation
- start admin/content manager scaffolding
This was mostly about proving a clean, readable front page with enough flexibility for later library features.
2026-02-05: library route architecture and navigation cleanup
The next major jump was routing and page ownership around the library experience:
- serving
/library/aboutand/library/visit - moving between static and Worker-served approaches while fixing proxy path issues
- correcting nav logo sizing and CSS on library pages
- applying favicon support site-wide
Session context around this date also shows preview friction and a direct requirement to preview “the full site including the worker page.” The commits reflect exactly that: bringing static and Worker views into alignment instead of treating them as separate systems.
2026-02-11: process hardening
A smaller but important milestone landed on 2026-02-11: project guidance docs were refreshed. That gave the project explicit operational memory around account boundaries, preview workflow, and deployment behavior.
This matters because the project spans GitHub + Cloudflare + Worker + R2. Without clear runbook-style context, small changes become risky quickly.
2026-02-15: migration sprint and reliability features
Most of the heavy systems work landed in one dense sprint:
- moved image paths into root
/img - migrated domain/repo references to the current fire-brigade naming
- configured Worker static asset binding
- excluded non-site files from static uploads
- restored legacy logo path compatibility
- updated homepage library hero image and desktop card sizing
- added
/libraryfallback and typo redirect from/libary
Session prompts from this same date line up directly with the visual work: switch the homepage image, zoom out framing, resize the section on desktop, then push.
Data durability: history, stale titles, cleanup
The last two commits in the sprint added the system-level behavior that made the project more than a static brochure:
- title history counting across scans
stale.jsonendpoint for older titles- R2 cleanup behavior for image lifecycle
- one-time history backfill endpoint to bootstrap counts
This is the point where the project becomes operationally useful over time, not just “currently correct.”
Where it landed
By 2026-02-15, the project had a clear shape:
- static site in front
- Worker logic for library/API behavior
- R2-backed data and image state
- guardrailed account/deploy workflow
The arc was practical: start simple, route correctly, then add persistence and recovery paths only after the daily preview/deploy loop felt stable.