The source for https://www.dana.lol — Dana's personal site and blog. It's a static site built with Middleman.
Ruby 3.4 is pinned in .tool-versions (managed with mise):
mise install
bundle install
bundle exec middleman serverThe dev server runs at http://localhost:4567.
Common tasks live in the Taskfile (task --list for the full set):
task build # full build with image optimization
task release:stage # build (fast) + deploy to Cloudflare Pages staging
task release:prod # build + deploy to Cloudflare Pages productionThe site deploys to Cloudflare Pages via wrangler. The legacy S3 + CloudFront setup (cloudformation/, the *:s3 tasks) is retained only as a rollback fallback.
Branch flow:
mainis the only long-lived branch — feature PRs target it and squash-merge (the PR title becomes the commit subject, so it must be a Conventional Commit). Every PR gets a preview deploy at<branch>.dana-lol-staging.pages.dev(seetesting.yml), and every merge deploys staging (staging.yml).- Releases are cut by release-please, which maintains a standing release PR on
mainwith the next version andCHANGELOG.mdentry computed from the conventional commits. Merging that PR tagsvX.Y.Z, publishes the GitHub Release, and triggers the production deploy (release.yml).
The site is static, but a small Sinatra app backs the contact page and /ama. It lives in the contact-form repo.