This blog is the publishing system behind jaimemguajardo.com: a fast place
for writing about projects, documenting what I am learning, and sharing work
while it is still fresh.
It keeps the public request path deliberately small. Astro turns Markdown and MDX into static HTML ahead of time, and Cloudflare serves the finished assets globally. There is no application server or database required to render a page.
- 01 Write Markdown in GitHub
- 02 Commit Push to main
- 03 Verify Check, test, build
- 04 Publish Cloudflare static assets
How publishing works
GitHub is both the editor and the source of truth. I can create or update a
Markdown file from a computer or phone and commit it to main. That commit
starts Cloudflare Workers Builds.
The production command runs content validation, Astro checks, ESLint, Vitest,
the static build, and a final artifact verifier. Only then does Wrangler upload
the verified dist/ directory to the production Worker. Cloudflare activates
the new static assets as one deployment, so readers never see a half-finished
release.
Drafts and subscriber updates
Publishing is fail-closed. A post appears publicly only when its frontmatter
contains the literal value draft: false. Draft routes are excluded from the
production build, the sitemap, and both feeds.
The public /feed.xml contains published writing for feed readers.
/rss.xml is intentionally stricter: it is generated only for production and
contains only posts that are both published and explicitly marked
notifySubscribers: true. Kit polls that live feed, which means a saved draft
or failed deployment cannot create a subscriber email.
Why this stack
The site keeps Astro Nano’s restrained interface while adding a publishing contract around it. The result is cheap to serve, quick to load, easy to edit from GitHub, and flexible enough to link to projects that run on their own subdomains or infrastructure.