Publishing Checklist
Eleventy generates most of the surfaces that used to be updated by hand. This page lists what is left: the manual steps for each kind of change, in one place. The Content Guide explains how to edit each file.
Work on a branch, preview with npm start, and run both checks before merging:
Publish a blog post
Generated for you: the blog index (featured post, series navigation, article grid), the "Latest writing" strip on the work page, previous and next links on neighbouring posts, and the post's sitemap entry.
Manual steps:
- [ ] Create
blog/posts/your-post-slug/index.htmlwith the front matter in Content Guide: Adding a blog post. - [ ] Add the card image named in
cardImagetoassets/images/. A missing image does not fail the build. It shows as a broken image on every card. - [ ] Add the share image named in
ogImage, if it is a new file. - [ ] Set
publishDatein the formSeptember 25, 2026. A date in any other form fails the build. - [ ] Set
partto the post's number in the series. The series tag, the title suffix and the previous and next links come from it. - [ ] Raise the published essay count in
index.htmlby one: the hero stat "Published essays" and the "Published essays on documentation systems" metric card. Both aredata-countvalues written by hand. - [ ] Check
blog/index.htmlfor any hand-written "Coming next" card that names this post, and remove or update it. - [ ] Check
index.htmlfor any carousel item or card that names a specific part. - [ ] Preview the post, the blog index, the work page and
/sitemap.xmllocally. - [ ] Commit:
feat: publish Part NN, Post Title. - [ ] Merge, then verify the deployment.
Publish a post that was committed as a draft
- [ ] Remove
draft: truefrom the post's front matter. - [ ] Set
publishDateandcardDateto the real publication date. - [ ] Work through every step in Publish a blog post.
Add a page that is not a blog post
- [ ] Create the page.
- [ ] Add its URL and date to the hand-written entries in
sitemap.njk. - [ ] Add Open Graph tags and a share image. See
scripts/og/README.md. - [ ] Add it to the navigation and footer on every top-level page, if it belongs there.
Remove or rename a page
- [ ] Remove or update its hand-written entry in
sitemap.njk. The sitemap must not list a URL that returns 404. - [ ] Search for links to the old URL:
grep -rn "old-path" --include="*.html" --include="*.njk" .
Add or remove a portfolio piece
- [ ] Edit the card in
work/index.html. See Content Guide: Updating the work page. - [ ] Resequence every
work-numand rebalancereveal-d1andreveal-d2. - [ ] Update the piece count wherever it appears: the work page hero headline and stat, the work page meta, Open Graph and Twitter descriptions, the homepage hero stat, the homepage "Facts" metric card, and the "All six portfolio pieces" line in the homepage social proof section.
- [ ] Update the homepage selected work grid, if the piece appears there.
- [ ] Add or remove its entry in
sitemap.njk, if it has its own URL ondouglasebhoman.com.
Change the audit price or packages
Buttons do not show a price. The price appears on the price blocks, in statistics and in page descriptions. Most pages write it as €300, and the audit page descriptions write it as €300, so search for both.
- [ ] Find every instance:
grep -rnE "(€|€)300" --include="*.html" . - [ ]
index.html: hero stat, the "Facts" metric note, both audit price cards, the social proof figure, meta description andog:description. - [ ]
services/index.html: hero statistic, hero card, price block, FAQ, meta description. - [ ]
audit/index.html: price block, meta and share descriptions. - [ ]
work/index.html: the line above the audit button. - [ ] The platform note beneath each price card, if the Upwork packages changed.
- [ ] Update LinkedIn (Experience entry and Featured description) to match.
Change availability
- [ ]
index.htmlhero badge (.hero-badge). - [ ] The footer availability line (
.f-avail) inindex.html,work/index.html,services/index.html,audit/index.htmlandblog/index.html. - [ ] "Limited availability" notes in both audit sections of
index.html.
Change the booking link
- [ ] Find every instance:
grep -rn "calendly.com/douglas-douglasebhoman" --include="*.html" . - [ ] Update each one, including the embed on
audit/index.htmland the button in_includes/layouts/post.html.
Add a new claim about experience, clients or results
- [ ] Confirm the claim links to something a reader can check.
- [ ] If an old claim is being retired, add its wording to the pattern list in
scripts/drift-check.sh.
Change the site documentation
- [ ] Follow Maintaining These Docs.
- [ ] If the docs header, sidebar or the top of the Deployment page changed, retake the screenshot used on the Site Documentation card on the homepage and work page. Follow Site documentation card screenshot in the website repository.